cvs: php4 /ext/domxml php_domxml.c

From: Date: Fri, 11 May 2001 16:14:19 +0000
Subject: cvs: php4 /ext/domxml php_domxml.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-5662@lists.php.net to get a copy of this message
andrei Fri May 11 09:14:19 2001 EDT Modified files: /php4/ext/domxml php_domxml.c Log: Start cleaning up domxml memory leaks. Still much stuff to do. Index: php4/ext/domxml/php_domxml.c diff -u php4/ext/domxml/php_domxml.c:1.36 php4/ext/domxml/php_domxml.c:1.37 --- php4/ext/domxml/php_domxml.c:1.36 Mon Apr 9 04:53:06 2001 +++ php4/ext/domxml/php_domxml.c Fri May 11 09:14:19 2001 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_domxml.c,v 1.36 2001/04/09 11:53:06 steinm Exp $ */ +/* $Id: php_domxml.c,v 1.37 2001/05/11 16:14:19 andrei Exp $ */ #include "php.h" @@ -38,9 +38,9 @@ static int le_domxmlpip; static int le_domxmlcommentp; static int le_domxmlnotationp; -static int le_domxmlentityp; +/*static int le_domxmlentityp;*/ static int le_domxmlentityrefp; -static int le_domxmlnsp; +/*static int le_domxmlnsp;*/ #if defined(LIBXML_XPATH_ENABLED) static int le_xpathctxp; @@ -294,12 +294,37 @@ ZEND_GET_MODULE(domxml) #endif +static void dom_object_set_data(void *obj, zval *wrapper) { + /* + char tmp[20]; + sprintf(tmp, "%08X", obj); + fprintf(stderr, "Adding %s to hash\n", tmp); + */ + ((xmlNodePtr) obj)->_private = wrapper; +} + +static zval *dom_object_get_data(void *obj) { + /* char tmp[20]; + sprintf(tmp, "%08X", obj); + fprintf(stderr, "Trying getting %s from object ...", tmp); + if(((xmlNodePtr) obj)->_private) + fprintf(stderr," found\n"); + else + fprintf(stderr," not found\n"); */ + return((zval *) (((xmlNodePtr) obj)->_private)); +} + static void php_free_xml_doc(zend_rsrc_list_entry *rsrc) { xmlDoc *doc = (xmlDoc *)rsrc->ptr; /* fprintf(stderr, "Freeing document: %s\n", doc->name); */ - if(doc) + + if (doc) { + zval *wrapper = dom_object_get_data(doc); + if (wrapper) + zval_ptr_dtor(&wrapper); xmlFreeDoc(doc); + } } void php_free_xml_node(zend_rsrc_list_entry *rsrc) { @@ -502,24 +527,6 @@ return obj; } -static void dom_object_set_data(void *obj, zval *wrapper) { - char tmp[20]; - sprintf(tmp, "%08X", obj); -/* fprintf(stderr, "Adding %s to hash\n", tmp); */ - ((xmlNodePtr) obj)->_private = wrapper; -} - -static zval *dom_object_get_data(void *obj) { -/* char tmp[20]; - sprintf(tmp, "%08X", obj); - fprintf(stderr, "Trying getting %s from object ...", tmp); - if(((xmlNodePtr) obj)->_private) - fprintf(stderr," found\n"); - else - fprintf(stderr," not found\n"); */ - return((zval *) (((xmlNodePtr) obj)->_private)); -} - static void php_dom_set_object(zval *wrapper, void *obj, int rsrc_type) { zval *handle, *addr; @@ -933,6 +940,7 @@ rv = php_domobject_new(node, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1045,6 +1053,7 @@ rv = php_domobject_new(first, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1067,6 +1076,7 @@ rv = php_domobject_new(last, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1090,6 +1100,7 @@ rv = php_domobject_new(first, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1113,6 +1124,7 @@ rv = php_domobject_new(first, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1137,6 +1149,7 @@ rv = php_domobject_new((xmlNodePtr) docp, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1224,6 +1237,7 @@ rv = php_domobject_new(last, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1302,6 +1316,7 @@ rv = php_domobject_new(child, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1328,6 +1343,7 @@ rv = php_domobject_new(child, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1355,6 +1371,7 @@ rv = php_domobject_new(child, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1441,6 +1458,7 @@ rv = php_domobject_new(child, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1525,6 +1543,7 @@ rv = php_domobject_new(node, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1595,6 +1614,7 @@ rv = php_domobject_new((xmlNodePtr) attr, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1723,6 +1743,7 @@ rv = php_domobject_new((xmlNodePtr) dtd, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1768,6 +1789,7 @@ rv = php_domobject_new(node, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); return; } node = node->next; @@ -1803,6 +1825,7 @@ rv = php_domobject_new(node, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1834,6 +1857,7 @@ rv = php_domobject_new(node, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1865,6 +1889,7 @@ rv = php_domobject_new(node, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1897,6 +1922,7 @@ rv = php_domobject_new((xmlNodePtr) node, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1929,6 +1955,7 @@ rv = php_domobject_new(node, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1964,6 +1991,7 @@ rv = php_domobject_new(node, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -1986,6 +2014,7 @@ rv = php_domobject_new((xmlNodePtr) dtd, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -2041,6 +2070,7 @@ rv = php_domobject_new((xmlNodePtr) docp, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -2129,6 +2159,7 @@ rv = php_domobject_new(nodep, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -2152,6 +2183,7 @@ rv = php_domobject_new((xmlNodePtr) docp, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -2355,6 +2387,7 @@ rv = php_xpathcontext_new(ctx, &ret); SEPARATE_ZVAL(&rv); *return_value = *rv; + FREE_ZVAL(rv); } /* }}} */ @@ -2454,6 +2487,8 @@ case XPATH_LOCATIONSET: break; case XPATH_USERS: + break; + case XPATH_XSLT_TREE: break; } *return_value = *rv;

« previous php.cvs (#5662) next »