diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2009-04-30 14:58:06 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2009-04-30 14:58:06 +0000 |
| commit | 00c83baf3852d0dfe399f1b67ff7736afcbad2d8 (patch) | |
| tree | 5f80819ec5d7dad7e855ed516a3e5760e8d2b317 | |
| parent | 0366a5b4fc7168e27c4d3c73c8e71de41de4f124 (diff) | |
Add debugging code to lasso_set_orginal_xmlnode
* lasso/xml/xml.c:
add code to trace allocation and deallocation of original xmlnode
associated to LassoNodes.
| -rw-r--r-- | lasso/xml/xml.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c index e3d63116..169b6107 100644 --- a/lasso/xml/xml.c +++ b/lasso/xml/xml.c @@ -758,6 +758,18 @@ lasso_node_get_original_xmlnode(LassoNode *node) return g_object_get_qdata(G_OBJECT(node), original_xmlnode_quark); } +static void original_xmlnode_free(void *node) { + xmlNode *xnode = (xmlNode*)node; + + + if (node) { + if (lasso_flag_memory_debug) { + fprintf(stderr, "freeing original xmlnode %s (at %p)\n", xnode->name, xnode); + } + xmlFreeNode(xnode); + } +} + /** * lasso_node_set_original_xmlnode: * @node: the #LassoNode object @@ -767,9 +779,22 @@ lasso_node_get_original_xmlnode(LassoNode *node) * */ void -lasso_node_set_original_xmlnode(LassoNode *node, xmlNode* xmlNode) +lasso_node_set_original_xmlnode(LassoNode *node, xmlNode* xmlnode) { - g_object_set_qdata_full(G_OBJECT(node), original_xmlnode_quark, xmlCopyNode(xmlNode, 1), (GDestroyNotify)xmlFreeNode); + if (xmlnode) { + xmlNode *copy = NULL; + + copy = xmlCopyNode(xmlnode, 1); + if (lasso_flag_memory_debug) { + fprintf(stderr, "setting original xmlnode (at %p) on node %s:%p\n", copy, G_OBJECT_TYPE_NAME (node), node); + } + g_object_set_qdata_full(G_OBJECT(node), original_xmlnode_quark, copy, (GDestroyNotify)original_xmlnode_free); + } else { + if (lasso_flag_memory_debug) { + fprintf(stderr, "clearing original xmlnode on node %p\n", node); + } + g_object_set_qdata_full(G_OBJECT(node), original_xmlnode_quark, NULL, (GDestroyNotify)original_xmlnode_free); + } } /*****************************************************************************/ |
