summaryrefslogtreecommitdiff
path: root/ext/domxml/php_domxml.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/domxml/php_domxml.c')
-rw-r--r--ext/domxml/php_domxml.c77
1 files changed, 56 insertions, 21 deletions
diff --git a/ext/domxml/php_domxml.c b/ext/domxml/php_domxml.c
index faa0855789..4d2e87279b 100644
--- a/ext/domxml/php_domxml.c
+++ b/ext/domxml/php_domxml.c
@@ -38,9 +38,9 @@ static int le_domxmltextp;
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_module_entry domxml_module_entry = {
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 @@ void *php_dom_get_object(zval *wrapper, int rsrc_type1, int rsrc_type2)
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 @@ PHP_FUNCTION(domxml_node)
rv = php_domobject_new(node, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1045,6 +1053,7 @@ PHP_FUNCTION(domxml_node_first_child)
rv = php_domobject_new(first, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1067,6 +1076,7 @@ PHP_FUNCTION(domxml_node_last_child)
rv = php_domobject_new(last, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1090,6 +1100,7 @@ PHP_FUNCTION(domxml_node_next_sibling)
rv = php_domobject_new(first, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1113,6 +1124,7 @@ PHP_FUNCTION(domxml_node_previous_sibling)
rv = php_domobject_new(first, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1137,6 +1149,7 @@ PHP_FUNCTION(domxml_node_owner_document)
rv = php_domobject_new((xmlNodePtr) docp, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1224,6 +1237,7 @@ PHP_FUNCTION(domxml_node_parent)
rv = php_domobject_new(last, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1302,6 +1316,7 @@ PHP_FUNCTION(domxml_node_add_child)
rv = php_domobject_new(child, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1328,6 +1343,7 @@ PHP_FUNCTION(domxml_node_append_child)
rv = php_domobject_new(child, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1355,6 +1371,7 @@ PHP_FUNCTION(domxml_node_insert_before)
rv = php_domobject_new(child, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1441,6 +1458,7 @@ PHP_FUNCTION(domxml_node_new_child)
rv = php_domobject_new(child, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1525,6 +1543,7 @@ PHP_FUNCTION(domxml_element)
rv = php_domobject_new(node, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1595,6 +1614,7 @@ PHP_FUNCTION(domxml_elem_set_attribute)
rv = php_domobject_new((xmlNodePtr) attr, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1723,6 +1743,7 @@ PHP_FUNCTION(domxml_doc_doctype)
rv = php_domobject_new((xmlNodePtr) dtd, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1768,6 +1789,7 @@ PHP_FUNCTION(domxml_doc_document_element)
rv = php_domobject_new(node, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
return;
}
node = node->next;
@@ -1803,6 +1825,7 @@ PHP_FUNCTION(domxml_doc_create_element)
rv = php_domobject_new(node, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1834,6 +1857,7 @@ PHP_FUNCTION(domxml_doc_create_text_node)
rv = php_domobject_new(node, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1865,6 +1889,7 @@ PHP_FUNCTION(domxml_doc_create_comment)
rv = php_domobject_new(node, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1897,6 +1922,7 @@ PHP_FUNCTION(domxml_doc_create_attribute)
rv = php_domobject_new((xmlNodePtr) node, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1929,6 +1955,7 @@ PHP_FUNCTION(domxml_doc_create_processing_instruction)
rv = php_domobject_new(node, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1964,6 +1991,7 @@ PHP_FUNCTION(domxml_doc_imported_node)
rv = php_domobject_new(node, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -1986,6 +2014,7 @@ PHP_FUNCTION(domxml_intdtd)
rv = php_domobject_new((xmlNodePtr) dtd, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -2041,6 +2070,7 @@ PHP_FUNCTION(xmldoc)
rv = php_domobject_new((xmlNodePtr) docp, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -2129,6 +2159,7 @@ PHP_FUNCTION(domxml_add_root)
rv = php_domobject_new(nodep, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -2152,6 +2183,7 @@ PHP_FUNCTION(domxml_new_xmldoc)
rv = php_domobject_new((xmlNodePtr) docp, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -2355,6 +2387,7 @@ static void php_xpathptr_new_context(INTERNAL_FUNCTION_PARAMETERS, int mode)
rv = php_xpathcontext_new(ctx, &ret);
SEPARATE_ZVAL(&rv);
*return_value = *rv;
+ FREE_ZVAL(rv);
}
/* }}} */
@@ -2455,6 +2488,8 @@ static void php_xpathptr_eval(INTERNAL_FUNCTION_PARAMETERS, int mode, int expr)
break;
case XPATH_USERS:
break;
+ case XPATH_XSLT_TREE:
+ break;
}
*return_value = *rv;
}