summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2009-04-30 14:58:06 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2009-04-30 14:58:06 +0000
commit00c83baf3852d0dfe399f1b67ff7736afcbad2d8 (patch)
tree5f80819ec5d7dad7e855ed516a3e5760e8d2b317
parent0366a5b4fc7168e27c4d3c73c8e71de41de4f124 (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.c29
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);
+ }
}
/*****************************************************************************/