diff options
author | Nikita Popov <nikic@php.net> | 2014-04-15 20:30:41 +0200 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2014-04-15 20:32:47 +0200 |
commit | 3b9fdf37e109102c5811fa7698e6ef2e00f09e24 (patch) | |
tree | 186c9aa67cc2712a37d84efe4bd87cb864dff133 | |
parent | 7a1a6092f652f1c322e3a09f9fb1491775fb4072 (diff) | |
download | php-git-3b9fdf37e109102c5811fa7698e6ef2e00f09e24.tar.gz |
Make DOM compile
Just make it compile, not work yet...
-rw-r--r-- | ext/dom/cdatasection.c | 12 | ||||
-rw-r--r-- | ext/dom/characterdata.c | 46 | ||||
-rw-r--r-- | ext/dom/comment.c | 2 | ||||
-rw-r--r-- | ext/dom/document.c | 370 | ||||
-rw-r--r-- | ext/dom/documentfragment.c | 14 | ||||
-rw-r--r-- | ext/dom/documenttype.c | 68 | ||||
-rw-r--r-- | ext/dom/dom_iterators.c | 54 | ||||
-rw-r--r-- | ext/dom/domerror.c | 30 | ||||
-rw-r--r-- | ext/dom/domimplementationlist.c | 5 | ||||
-rw-r--r-- | ext/dom/domlocator.c | 25 | ||||
-rw-r--r-- | ext/dom/domstringlist.c | 5 | ||||
-rw-r--r-- | ext/dom/element.c | 34 | ||||
-rw-r--r-- | ext/dom/entity.c | 48 | ||||
-rw-r--r-- | ext/dom/entityreference.c | 2 | ||||
-rw-r--r-- | ext/dom/namednodemap.c | 11 | ||||
-rw-r--r-- | ext/dom/node.c | 288 | ||||
-rw-r--r-- | ext/dom/nodelist.c | 17 | ||||
-rw-r--r-- | ext/dom/notation.c | 22 | ||||
-rw-r--r-- | ext/dom/php_dom.c | 6 | ||||
-rw-r--r-- | ext/dom/processinginstruction.c | 53 | ||||
-rw-r--r-- | ext/dom/text.c | 12 | ||||
-rw-r--r-- | ext/dom/typeinfo.c | 10 | ||||
-rw-r--r-- | ext/dom/xpath.c | 161 |
23 files changed, 423 insertions, 872 deletions
diff --git a/ext/dom/cdatasection.c b/ext/dom/cdatasection.c index 6ca1ffcf0c..a2f0589464 100644 --- a/ext/dom/cdatasection.c +++ b/ext/dom/cdatasection.c @@ -71,14 +71,12 @@ PHP_METHOD(domcdatasection, __construct) RETURN_FALSE; } - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); - if (intern != NULL) { - oldnode = dom_object_get_node(intern); - if (oldnode != NULL) { - php_libxml_node_free_resource(oldnode TSRMLS_CC); - } - php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC); + intern = Z_DOMOBJ_P(id); + oldnode = dom_object_get_node(intern); + if (oldnode != NULL) { + php_libxml_node_free_resource(oldnode TSRMLS_CC); } + php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC); } /* }}} end DOMCdataSection::__construct */ diff --git a/ext/dom/characterdata.c b/ext/dom/characterdata.c index 92eb280159..b1b5d76d26 100644 --- a/ext/dom/characterdata.c +++ b/ext/dom/characterdata.c @@ -76,25 +76,21 @@ readonly=no URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-72AB8359 Since: */ -int dom_characterdata_data_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_characterdata_data_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlNodePtr nodep; + xmlNodePtr nodep = dom_object_get_node(obj); xmlChar *content; - nodep = dom_object_get_node(obj); - if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); - if ((content = xmlNodeGetContent(nodep)) != NULL) { - ZVAL_STRING(*retval, content, 1); + ZVAL_STRING(retval, content); xmlFree(content); } else { - ZVAL_EMPTY_STRING(*retval); + ZVAL_EMPTY_STRING(retval); } return SUCCESS; @@ -102,31 +98,19 @@ int dom_characterdata_data_read(dom_object *obj, zval **retval TSRMLS_DC) int dom_characterdata_data_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; - xmlNode *nodep; - - nodep = dom_object_get_node(obj); + xmlNode *nodep = dom_object_get_node(obj); + zend_string *str; if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - if (newval->type != IS_STRING) { - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_string(newval); - } + str = zval_get_string(newval TSRMLS_CC); - xmlNodeSetContentLen(nodep, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1); - - if (newval == &value_copy) { - zval_dtor(newval); - } + xmlNodeSetContentLen(nodep, str->val, str->len + 1); + STR_RELEASE(str); return SUCCESS; } @@ -137,21 +121,17 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7D61178C Since: */ -int dom_characterdata_length_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_characterdata_length_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlNodePtr nodep; + xmlNodePtr nodep = dom_object_get_node(obj); xmlChar *content; long length = 0; - nodep = dom_object_get_node(obj); - if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); - content = xmlNodeGetContent(nodep); if (content) { @@ -159,7 +139,7 @@ int dom_characterdata_length_read(dom_object *obj, zval **retval TSRMLS_DC) xmlFree(content); } - ZVAL_LONG(*retval, length); + ZVAL_LONG(retval, length); return SUCCESS; } @@ -207,7 +187,7 @@ PHP_FUNCTION(dom_characterdata_substring_data) xmlFree(cur); if (substring) { - RETVAL_STRING(substring, 1); + RETVAL_STRING(substring); xmlFree(substring); } else { RETVAL_EMPTY_STRING(); diff --git a/ext/dom/comment.c b/ext/dom/comment.c index eb181ec454..0670337651 100644 --- a/ext/dom/comment.c +++ b/ext/dom/comment.c @@ -71,7 +71,7 @@ PHP_METHOD(domcomment, __construct) RETURN_FALSE; } - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); if (intern != NULL) { oldnode = dom_object_get_node(intern); if (oldnode != NULL) { diff --git a/ext/dom/document.c b/ext/dom/document.c index 73ca6a95b3..c27d766393 100644 --- a/ext/dom/document.c +++ b/ext/dom/document.c @@ -280,7 +280,7 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-87CD092 Since: */ -int dom_document_document_element_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_document_element_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj); xmlNode *root; @@ -306,7 +306,7 @@ int dom_document_document_element_read(dom_object *obj, zval **retval TSRMLS_DC) URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-encoding Since: DOM Level 3 */ -int dom_document_encoding_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_encoding_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj); char *encoding; @@ -338,7 +338,7 @@ int dom_document_encoding_write(dom_object *obj, zval *newval TSRMLS_DC) return FAILURE; } - str = zval_get_string(newval TSMLRS_CC); + str = zval_get_string(newval TSRMLS_CC); handler = xmlFindCharEncodingHandler(Z_STRVAL_P(newval)); @@ -347,7 +347,7 @@ int dom_document_encoding_write(dom_object *obj, zval *newval TSRMLS_DC) if (docp->encoding != NULL) { xmlFree((xmlChar *)docp->encoding); } - docp->encoding = xmlStrdup((const xmlChar *) Z_STRVAL_P(newval)); + docp->encoding = xmlStrdup((const xmlChar *) str->val); } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Document Encoding"); } @@ -363,10 +363,9 @@ readonly=no URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-standalone Since: DOM Level 3 */ -int dom_document_standalone_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_standalone_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlDoc *docp; - int standalone; docp = (xmlDocPtr) dom_object_get_node(obj); @@ -375,47 +374,22 @@ int dom_document_standalone_read(dom_object *obj, zval **retval TSRMLS_DC) return FAILURE; } - ALLOC_ZVAL(*retval); - standalone = docp->standalone; - ZVAL_BOOL(*retval, standalone); - + ZVAL_BOOL(retval, docp->standalone); return SUCCESS; } int dom_document_standalone_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; - xmlDoc *docp; + xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj); int standalone; - docp = (xmlDocPtr) dom_object_get_node(obj); - if (docp == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_long(newval); - - standalone = Z_LVAL_P(newval); - if (standalone > 0) { - docp->standalone = 1; - } - else if (standalone < 0) { - docp->standalone = -1; - } - else { - docp->standalone = 0; - } - - if (newval == &value_copy) { - zval_dtor(newval); - } + standalone = zval_get_long(newval TSRMLS_CC); + docp->standalone = ZEND_NORMALIZE_BOOL(standalone); return SUCCESS; } @@ -427,25 +401,22 @@ readonly=no URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-version Since: DOM Level 3 */ -int dom_document_version_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_version_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlDoc *docp; + xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj); char *version; - docp = (xmlDocPtr) dom_object_get_node(obj); - if (docp == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } version = (char *) docp->version; - ALLOC_ZVAL(*retval); if (version != NULL) { - ZVAL_STRING(*retval, version, 1); + ZVAL_STRING(retval, version); } else { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); } return SUCCESS; @@ -453,10 +424,8 @@ int dom_document_version_read(dom_object *obj, zval **retval TSRMLS_DC) int dom_document_version_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; - xmlDoc *docp; - - docp = (xmlDocPtr) dom_object_get_node(obj); + xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj); + zend_string *str; if (docp == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); @@ -467,21 +436,11 @@ int dom_document_version_write(dom_object *obj, zval *newval TSRMLS_DC) xmlFree((xmlChar *) docp->version ); } - if (newval->type != IS_STRING) { - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_string(newval); - } - - docp->version = xmlStrdup((const xmlChar *) Z_STRVAL_P(newval)); + str = zval_get_string(newval TSRMLS_CC); - if (newval == &value_copy) { - zval_dtor(newval); - } + docp->version = xmlStrdup((const xmlChar *) str->val); + STR_RELEASE(str); return SUCCESS; } @@ -492,39 +451,23 @@ readonly=no URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-strictErrorChecking Since: DOM Level 3 */ -int dom_document_strict_error_checking_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_strict_error_checking_read(dom_object *obj, zval *retval TSRMLS_DC) { - dom_doc_propsptr doc_prop; - - ALLOC_ZVAL(*retval); if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - ZVAL_BOOL(*retval, doc_prop->stricterror); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + ZVAL_BOOL(retval, doc_prop->stricterror); } else { - ZVAL_FALSE(*retval); + ZVAL_FALSE(retval); } return SUCCESS; } int dom_document_strict_error_checking_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; - dom_doc_propsptr doc_prop; - - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_boolean(newval); if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - doc_prop->stricterror = Z_LVAL_P(newval); - } - - if (newval == &value_copy) { - zval_dtor(newval); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + doc_prop->stricterror = zend_is_true(newval TSRMLS_CC); } return SUCCESS; @@ -535,39 +478,22 @@ int dom_document_strict_error_checking_write(dom_object *obj, zval *newval TSRML /* {{{ formatOutput boolean readonly=no */ -int dom_document_format_output_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_format_output_read(dom_object *obj, zval *retval TSRMLS_DC) { - dom_doc_propsptr doc_prop; - - ALLOC_ZVAL(*retval); if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - ZVAL_BOOL(*retval, doc_prop->formatoutput); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + ZVAL_BOOL(retval, doc_prop->formatoutput); } else { - ZVAL_FALSE(*retval); + ZVAL_FALSE(retval); } return SUCCESS; } int dom_document_format_output_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; - dom_doc_propsptr doc_prop; - - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_boolean(newval); - if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - doc_prop->formatoutput = Z_LVAL_P(newval); - } - - if (newval == &value_copy) { - zval_dtor(newval); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + doc_prop->formatoutput = zend_is_true(newval TSRMLS_CC); } return SUCCESS; @@ -577,39 +503,22 @@ int dom_document_format_output_write(dom_object *obj, zval *newval TSRMLS_DC) /* {{{ validateOnParse boolean readonly=no */ -int dom_document_validate_on_parse_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_validate_on_parse_read(dom_object *obj, zval *retval TSRMLS_DC) { - dom_doc_propsptr doc_prop; - - ALLOC_ZVAL(*retval); if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - ZVAL_BOOL(*retval, doc_prop->validateonparse); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + ZVAL_BOOL(retval, doc_prop->validateonparse); } else { - ZVAL_FALSE(*retval); + ZVAL_FALSE(retval); } return SUCCESS; } int dom_document_validate_on_parse_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; - dom_doc_propsptr doc_prop; - - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_boolean(newval); - if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - doc_prop->validateonparse = Z_LVAL_P(newval); - } - - if (newval == &value_copy) { - zval_dtor(newval); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + doc_prop->validateonparse = zend_is_true(newval TSRMLS_CC); } return SUCCESS; @@ -619,39 +528,22 @@ int dom_document_validate_on_parse_write(dom_object *obj, zval *newval TSRMLS_DC /* {{{ resolveExternals boolean readonly=no */ -int dom_document_resolve_externals_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_resolve_externals_read(dom_object *obj, zval *retval TSRMLS_DC) { - dom_doc_propsptr doc_prop; - - ALLOC_ZVAL(*retval); if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - ZVAL_BOOL(*retval, doc_prop->resolveexternals); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + ZVAL_BOOL(retval, doc_prop->resolveexternals); } else { - ZVAL_FALSE(*retval); + ZVAL_FALSE(retval); } return SUCCESS; } int dom_document_resolve_externals_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; - dom_doc_propsptr doc_prop; - - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_boolean(newval); - if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - doc_prop->resolveexternals = Z_LVAL_P(newval); - } - - if (newval == &value_copy) { - zval_dtor(newval); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + doc_prop->resolveexternals = zend_is_true(newval TSRMLS_CC); } return SUCCESS; @@ -661,39 +553,22 @@ int dom_document_resolve_externals_write(dom_object *obj, zval *newval TSRMLS_DC /* {{{ preserveWhiteSpace boolean readonly=no */ -int dom_document_preserve_whitespace_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_preserve_whitespace_read(dom_object *obj, zval *retval TSRMLS_DC) { - dom_doc_propsptr doc_prop; - - ALLOC_ZVAL(*retval); if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - ZVAL_BOOL(*retval, doc_prop->preservewhitespace); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + ZVAL_BOOL(retval, doc_prop->preservewhitespace); } else { - ZVAL_FALSE(*retval); + ZVAL_FALSE(retval); } return SUCCESS; } int dom_document_preserve_whitespace_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; - dom_doc_propsptr doc_prop; - - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_boolean(newval); - if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - doc_prop->preservewhitespace = Z_LVAL_P(newval); - } - - if (newval == &value_copy) { - zval_dtor(newval); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + doc_prop->preservewhitespace = zend_is_true(newval TSRMLS_CC); } return SUCCESS; @@ -703,39 +578,22 @@ int dom_document_preserve_whitespace_write(dom_object *obj, zval *newval TSRMLS_ /* {{{ recover boolean readonly=no */ -int dom_document_recover_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_recover_read(dom_object *obj, zval *retval TSRMLS_DC) { - dom_doc_propsptr doc_prop; - - ALLOC_ZVAL(*retval); if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - ZVAL_BOOL(*retval, doc_prop->recover); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + ZVAL_BOOL(retval, doc_prop->recover); } else { - ZVAL_FALSE(*retval); + ZVAL_FALSE(retval); } return SUCCESS; } int dom_document_recover_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; - dom_doc_propsptr doc_prop; - - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_boolean(newval); - if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - doc_prop->recover = Z_LVAL_P(newval); - } - - if (newval == &value_copy) { - zval_dtor(newval); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + doc_prop->recover = zend_is_true(newval TSRMLS_CC); } return SUCCESS; @@ -745,39 +603,22 @@ int dom_document_recover_write(dom_object *obj, zval *newval TSRMLS_DC) /* {{{ substituteEntities boolean readonly=no */ -int dom_document_substitue_entities_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_substitue_entities_read(dom_object *obj, zval *retval TSRMLS_DC) { - dom_doc_propsptr doc_prop; - - ALLOC_ZVAL(*retval); if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - ZVAL_BOOL(*retval, doc_prop->substituteentities); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + ZVAL_BOOL(retval, doc_prop->substituteentities); } else { - ZVAL_FALSE(*retval); + ZVAL_FALSE(retval); } return SUCCESS; } int dom_document_substitue_entities_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; - dom_doc_propsptr doc_prop; - - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_boolean(newval); - if (obj->document) { - doc_prop = dom_get_doc_props(obj->document); - doc_prop->substituteentities = Z_LVAL_P(newval); - } - - if (newval == &value_copy) { - zval_dtor(newval); + dom_doc_propsptr doc_prop = dom_get_doc_props(obj->document); + doc_prop->substituteentities = zend_is_true(newval TSRMLS_CC); } return SUCCESS; @@ -789,24 +630,21 @@ readonly=no URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-documentURI Since: DOM Level 3 */ -int dom_document_document_uri_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_document_uri_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlDoc *docp; + xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj); char *url; - docp = (xmlDocPtr) dom_object_get_node(obj); - if (docp == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); url = (char *) docp->URL; if (url != NULL) { - ZVAL_STRING(*retval, url, 1); + ZVAL_STRING(retval, url); } else { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); } return SUCCESS; @@ -814,10 +652,8 @@ int dom_document_document_uri_read(dom_object *obj, zval **retval TSRMLS_DC) int dom_document_document_uri_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; - xmlDoc *docp; - - docp = (xmlDocPtr) dom_object_get_node(obj); + xmlDoc *docp = (xmlDocPtr) dom_object_get_node(obj); + zend_string *str; if (docp == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); @@ -828,21 +664,11 @@ int dom_document_document_uri_write(dom_object *obj, zval *newval TSRMLS_DC) xmlFree((xmlChar *) docp->URL); } - if (newval->type != IS_STRING) { - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_string(newval); - } + str = zval_get_string(newval TSRMLS_CC); - docp->URL = xmlStrdup((const xmlChar *) Z_STRVAL_P(newval)); - - if (newval == &value_copy) { - zval_dtor(newval); - } + docp->URL = xmlStrdup((const xmlChar *) str->val); + STR_RELEASE(str); return SUCCESS; } @@ -853,10 +679,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-config Since: DOM Level 3 */ -int dom_document_config_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_document_config_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_NULL(*retval); + ZVAL_NULL(retval); return SUCCESS; } @@ -1128,7 +953,7 @@ PHP_FUNCTION(dom_document_get_elements_by_tag_name) DOM_GET_OBJ(docp, id, xmlDocPtr, intern); php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC); - namednode = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC); + namednode = Z_DOMOBJ_P(return_value); local = xmlCharStrndup(name, name_len); dom_namednode_iter(intern, 0, namednode, NULL, local, NULL TSRMLS_CC); } @@ -1337,7 +1162,7 @@ PHP_FUNCTION(dom_document_get_elements_by_tag_name_ns) DOM_GET_OBJ(docp, id, xmlDocPtr, intern); php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC); - namednode = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC); + namednode = Z_DOMOBJ_P(return_value); local = xmlCharStrndup(name, name_len); nsuri = xmlCharStrndup(uri, uri_len); dom_namednode_iter(intern, 0, namednode, NULL, local, nsuri TSRMLS_CC); @@ -1443,7 +1268,7 @@ PHP_METHOD(domdocument, __construct) docp->encoding = (const xmlChar*)xmlStrdup(encoding); } - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); if (intern != NULL) { olddoc = (xmlDocPtr) dom_object_get_node(intern); if (olddoc != NULL) { @@ -1523,7 +1348,7 @@ static xmlDocPtr dom_document_parser(zval *id, int mode, char *source, int sourc char *directory=NULL, resolved_path[MAXPATHLEN]; if (id != NULL) { - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); document = intern->document; } @@ -1656,7 +1481,7 @@ static void dom_parse_document(INTERNAL_FUNCTION_PARAMETERS, int mode) { RETURN_FALSE; if (id != NULL) { - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); if (intern != NULL) { docp = (xmlDocPtr) dom_object_get_node(intern); doc_prop = NULL; @@ -1798,7 +1623,7 @@ PHP_FUNCTION(dom_document_savexml) xmlBufferFree(buf); RETURN_FALSE; } - RETVAL_STRING(mem, 1); + RETVAL_STRING(mem); xmlBufferFree(buf); } else { if (options & LIBXML_SAVE_NOEMPTYTAG) { @@ -1813,7 +1638,7 @@ PHP_FUNCTION(dom_document_savexml) if (!size) { RETURN_FALSE; } - RETVAL_STRINGL(mem, size, 1); + RETVAL_STRINGL(mem, size); xmlFree(mem); } } @@ -2175,7 +2000,7 @@ static void dom_load_html(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ */ RETURN_FALSE; if (id != NULL && instanceof_function(Z_OBJCE_P(id), dom_document_class_entry TSRMLS_CC)) { - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); if (intern != NULL) { docp = (xmlDocPtr) dom_object_get_node(intern); doc_prop = NULL; @@ -2320,7 +2145,7 @@ PHP_FUNCTION(dom_document_save_html) if (!mem) { RETVAL_FALSE; } else { - RETVAL_STRINGL((const char*) mem, size, 1); + RETVAL_STRINGL((const char*) mem, size); } } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error dumping HTML node"); @@ -2336,7 +2161,7 @@ PHP_FUNCTION(dom_document_save_html) if (!size) { RETVAL_FALSE; } else { - RETVAL_STRINGL((const char*) mem, size, 1); + RETVAL_STRINGL((const char*) mem, size); } if (mem) xmlFree(mem); @@ -2353,47 +2178,22 @@ PHP_METHOD(domdocument, registerNodeClass) { zval *id; xmlDoc *docp; - char *baseclass = NULL, *extendedclass = NULL; - int baseclass_len = 0, extendedclass_len = 0; - zend_class_entry *basece = NULL, *ce = NULL; + zend_class_entry *basece = dom_node_class_entry, *ce = NULL; dom_object *intern; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oss!", &id, dom_document_class_entry, &baseclass, &baseclass_len, &extendedclass, &extendedclass_len) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OCs!", &id, dom_document_class_entry, &basece, &ce) == FAILURE) { return; } - if (baseclass_len) { - zend_class_entry **pce; - if (zend_lookup_class(baseclass, baseclass_len, &pce TSRMLS_CC) == FAILURE) { - php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s does not exist", baseclass); - return; - } - basece = *pce; - } - - if (basece == NULL || ! instanceof_function(basece, dom_node_class_entry TSRMLS_CC)) { - php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s is not derived from DOMNode.", baseclass); - return; - } - - if (extendedclass_len) { - zend_class_entry **pce; - if (zend_lookup_class(extendedclass, extendedclass_len, &pce TSRMLS_CC) == FAILURE) { - php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s does not exist", extendedclass); - } - ce = *pce; - } - if (ce == NULL || instanceof_function(ce, basece TSRMLS_CC)) { - DOM_GET_OBJ(docp, id, xmlDocPtr, intern); if (dom_set_doc_classmap(intern->document, basece, ce TSRMLS_CC) == FAILURE) { - php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s could not be registered.", extendedclass); + php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s could not be registered.", ce->name->val); } RETURN_TRUE; } else { - php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s is not derived from %s.", extendedclass, baseclass); + php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s is not derived from %s.", ce->name->val, basece->name->val); } RETURN_FALSE; diff --git a/ext/dom/documentfragment.c b/ext/dom/documentfragment.c index e99f57151f..f20ada3db4 100644 --- a/ext/dom/documentfragment.c +++ b/ext/dom/documentfragment.c @@ -72,15 +72,13 @@ PHP_METHOD(domdocumentfragment, __construct) RETURN_FALSE; } - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); - if (intern != NULL) { - oldnode = dom_object_get_node(intern); - if (oldnode != NULL) { - php_libxml_node_free_resource(oldnode TSRMLS_CC); - } - /* php_dom_set_object(intern, nodep TSRMLS_CC); */ - php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC); + intern = Z_DOMOBJ_P(id); + oldnode = dom_object_get_node(intern); + if (oldnode != NULL) { + php_libxml_node_free_resource(oldnode TSRMLS_CC); } + /* php_dom_set_object(intern, nodep TSRMLS_CC); */ + php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC); } /* }}} end DOMDocumentFragment::__construct */ diff --git a/ext/dom/documenttype.c b/ext/dom/documenttype.c index a94cc31d74..6f2c1e8e0c 100644 --- a/ext/dom/documenttype.c +++ b/ext/dom/documenttype.c @@ -43,19 +43,16 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1844763134 Since: */ -int dom_documenttype_name_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_documenttype_name_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlDtdPtr dtdptr; - - dtdptr = (xmlDtdPtr) dom_object_get_node(obj); + xmlDtdPtr dtdptr = (xmlDtdPtr) dom_object_get_node(obj); if (dtdptr == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, (char *) (dtdptr->name), 1); + ZVAL_STRING(retval, (char *) (dtdptr->name)); return SUCCESS; } @@ -67,25 +64,22 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1788794630 Since: */ -int dom_documenttype_entities_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_documenttype_entities_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlDtdPtr doctypep; + xmlDtdPtr doctypep = (xmlDtdPtr) dom_object_get_node(obj); xmlHashTable *entityht; dom_object *intern; - doctypep = (xmlDtdPtr) dom_object_get_node(obj); - if (doctypep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - MAKE_STD_ZVAL(*retval); - php_dom_create_interator(*retval, DOM_NAMEDNODEMAP TSRMLS_CC); + php_dom_create_interator(retval, DOM_NAMEDNODEMAP TSRMLS_CC); entityht = (xmlHashTable *) doctypep->entities; - intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC); + intern = Z_DOMOBJ_P(retval); dom_namednode_iter(obj, XML_ENTITY_NODE, intern, entityht, NULL, NULL TSRMLS_CC); return SUCCESS; @@ -98,25 +92,22 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D46829EF Since: */ -int dom_documenttype_notations_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_documenttype_notations_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlDtdPtr doctypep; + xmlDtdPtr doctypep = (xmlDtdPtr) dom_object_get_node(obj); xmlHashTable *notationht; dom_object *intern; - doctypep = (xmlDtdPtr) dom_object_get_node(obj); - if (doctypep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - MAKE_STD_ZVAL(*retval); - php_dom_create_interator(*retval, DOM_NAMEDNODEMAP TSRMLS_CC); + php_dom_create_interator(retval, DOM_NAMEDNODEMAP TSRMLS_CC); notationht = (xmlHashTable *) doctypep->notations; - intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC); + intern = Z_DOMOBJ_P(retval); dom_namednode_iter(obj, XML_NOTATION_NODE, intern, notationht, NULL, NULL TSRMLS_CC); return SUCCESS; @@ -129,22 +120,19 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-Core-DocType-publicId Since: DOM Level 2 */ -int dom_documenttype_public_id_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_documenttype_public_id_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlDtdPtr dtdptr; - - dtdptr = (xmlDtdPtr) dom_object_get_node(obj); + xmlDtdPtr dtdptr = (xmlDtdPtr) dom_object_get_node(obj); if (dtdptr == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); if (dtdptr->ExternalID) { - ZVAL_STRING(*retval, (char *) (dtdptr->ExternalID), 1); + ZVAL_STRING(retval, (char *) (dtdptr->ExternalID)); } else { - ZVAL_EMPTY_STRING(*retval); + ZVAL_EMPTY_STRING(retval); } return SUCCESS; @@ -157,22 +145,19 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-Core-DocType-systemId Since: DOM Level 2 */ -int dom_documenttype_system_id_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_documenttype_system_id_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlDtdPtr dtdptr; - - dtdptr = (xmlDtdPtr) dom_object_get_node(obj); + xmlDtdPtr dtdptr = (xmlDtdPtr) dom_object_get_node(obj); if (dtdptr == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); if (dtdptr->SystemID) { - ZVAL_STRING(*retval, (char *) (dtdptr->SystemID), 1); + ZVAL_STRING(retval, (char *) (dtdptr->SystemID)); } else { - ZVAL_EMPTY_STRING(*retval); + ZVAL_EMPTY_STRING(retval); } return SUCCESS; } @@ -184,38 +169,33 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-Core-DocType-internalSubset Since: DOM Level 2 */ -int dom_documenttype_internal_subset_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_documenttype_internal_subset_read(dom_object *obj, zval *retval TSRMLS_DC) { - - xmlDtdPtr dtdptr; + xmlDtdPtr dtdptr = (xmlDtdPtr) dom_object_get_node(obj); xmlDtd *intsubset; xmlOutputBuffer *buff = NULL; - dtdptr = (xmlDtdPtr) dom_object_get_node(obj); - if (dtdptr == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); - if (dtdptr->doc != NULL && ((intsubset = dtdptr->doc->intSubset) != NULL)) { buff = xmlAllocOutputBuffer(NULL); if (buff != NULL) { xmlNodeDumpOutput (buff, NULL, (xmlNodePtr) intsubset, 0, 0, NULL); xmlOutputBufferFlush(buff); #ifdef LIBXML2_NEW_BUFFER - ZVAL_STRINGL(*retval, xmlOutputBufferGetContent(buff), xmlOutputBufferGetSize(buff), 1); + ZVAL_STRINGL(retval, xmlOutputBufferGetContent(buff), xmlOutputBufferGetSize(buff)); #else - ZVAL_STRINGL(*retval, buff->buffer->content, buff->buffer->use, 1); + ZVAL_STRINGL(retval, buff->buffer->content, buff->buffer->use); #endif (void)xmlOutputBufferClose(buff); return SUCCESS; } } - ZVAL_EMPTY_STRING(*retval); + ZVAL_EMPTY_STRING(retval); return SUCCESS; diff --git a/ext/dom/dom_iterators.c b/ext/dom/dom_iterators.c index 987d54de25..c977280b76 100644 --- a/ext/dom/dom_iterators.c +++ b/ext/dom/dom_iterators.c @@ -126,10 +126,10 @@ static void php_dom_iterator_dtor(zend_object_iterator *iter TSRMLS_DC) /* {{{ * { php_dom_iterator *iterator = (php_dom_iterator *)iter; - zval_ptr_dtor((zval**)&iterator->intern.data); + zval_ptr_dtor(&iterator->intern.data); if (iterator->curobj) { - zval_ptr_dtor((zval**)&iterator->curobj); + zval_ptr_dtor(&iterator->curobj); } efree(iterator); @@ -149,27 +149,27 @@ static int php_dom_iterator_valid(zend_object_iterator *iter TSRMLS_DC) /* {{{ * } /* }}} */ -static void php_dom_iterator_current_data(zend_object_iterator *iter, zval ***data TSRMLS_DC) /* {{{ */ +zval *php_dom_iterator_current_data(zend_object_iterator *iter TSRMLS_DC) /* {{{ */ { php_dom_iterator *iterator = (php_dom_iterator *)iter; - *data = &iterator->curobj; + return iterator->curobj; } /* }}} */ static void php_dom_iterator_current_key(zend_object_iterator *iter, zval *key TSRMLS_DC) /* {{{ */ { php_dom_iterator *iterator = (php_dom_iterator *)iter; - zval *object = (zval *)iterator->intern.data; + zval *object = &iterator->intern.data; if (instanceof_function(Z_OBJCE_P(object), dom_nodelist_class_entry TSRMLS_CC)) { ZVAL_LONG(key, iter->index); } else { - dom_object *intern = (dom_object *)zend_object_store_get_object(iterator->curobj TSRMLS_CC); + dom_object *intern = Z_DOMOBJ_P(iterator->curobj); if (intern != NULL && intern->ptr != NULL) { xmlNodePtr curnode = (xmlNodePtr)((php_libxml_node_ptr *)intern->ptr)->node; - ZVAL_STRINGL(key, (char *) curnode->name, xmlStrlen(curnode->name), 1); + ZVAL_STRINGL(key, (char *) curnode->name, xmlStrlen(curnode->name)); } else { ZVAL_NULL(key); } @@ -185,27 +185,28 @@ static void php_dom_iterator_move_forward(zend_object_iterator *iter TSRMLS_DC) dom_object *intern; dom_object *nnmap; dom_nnodemap_object *objmap; - int ret, previndex=0; + int previndex=0; HashTable *nodeht; - zval **entry; + zval *entry; php_dom_iterator *iterator = (php_dom_iterator *)iter; - object = (zval *)iterator->intern.data; - nnmap = (dom_object *)zend_object_store_get_object(object TSRMLS_CC); + object = &iterator->intern.data; + nnmap = Z_DOMOBJ_P(object); objmap = (dom_nnodemap_object *)nnmap->ptr; curobj = iterator->curobj; - intern = (dom_object *)zend_object_store_get_object(curobj TSRMLS_CC); + intern = Z_DOMOBJ_P(curobj); if (intern != NULL && intern->ptr != NULL) { if (objmap->nodetype != XML_ENTITY_NODE && objmap->nodetype != XML_NOTATION_NODE) { if (objmap->nodetype == DOM_NODESET) { nodeht = HASH_OF(objmap->baseobjptr); zend_hash_move_forward(nodeht); - if (zend_hash_get_current_data(nodeht, (void **) &entry)==SUCCESS) { - curattr = *entry; - Z_ADDREF_P(curattr); + if ((entry = zend_hash_get_current_data(nodeht))) { + //??? + curattr = entry; + if (Z_REFCOUNTED_P(curattr)) Z_ADDREF_P(curattr); } } else { curnode = (xmlNodePtr)((php_libxml_node_ptr *)intern->ptr)->node; @@ -235,10 +236,9 @@ static void php_dom_iterator_move_forward(zend_object_iterator *iter TSRMLS_DC) } } err: - zval_ptr_dtor((zval**)&curobj); + zval_ptr_dtor(curobj); if (curnode) { - MAKE_STD_ZVAL(curattr); - curattr = php_dom_create_object(curnode, &ret, curattr, objmap->baseobj TSRMLS_CC); + php_dom_create_object(curnode, curattr, objmap->baseobj TSRMLS_CC); } iterator->curobj = curattr; @@ -260,9 +260,9 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object, i dom_nnodemap_object *objmap; xmlNodePtr nodep, curnode=NULL; zval *curattr = NULL; - int ret, curindex = 0; + int curindex = 0; HashTable *nodeht; - zval **entry; + zval *entry; php_dom_iterator *iterator; if (by_ref) { @@ -270,11 +270,10 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object, i } iterator = emalloc(sizeof(php_dom_iterator)); - Z_ADDREF_P(object); - iterator->intern.data = (void*)object; + ZVAL_COPY(&iterator->intern.data, object); iterator->intern.funcs = &php_dom_iterator_funcs; - intern = (dom_object *)zend_object_store_get_object(object TSRMLS_CC); + intern = Z_DOMOBJ_P(object); objmap = (dom_nnodemap_object *)intern->ptr; if (objmap != NULL) { if (objmap->nodetype != XML_ENTITY_NODE && @@ -282,9 +281,9 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object, i if (objmap->nodetype == DOM_NODESET) { nodeht = HASH_OF(objmap->baseobjptr); zend_hash_internal_pointer_reset(nodeht); - if (zend_hash_get_current_data(nodeht, (void **) &entry)==SUCCESS) { - curattr = *entry; - Z_ADDREF_P(curattr); + if ((entry = zend_hash_get_current_data(nodeht))) { + curattr = entry; + if (Z_REFCOUNTED_P(curattr)) Z_ADDREF_P(curattr); } } else { nodep = (xmlNode *)dom_object_get_node(objmap->baseobj); @@ -316,8 +315,7 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object, i } err: if (curnode) { - MAKE_STD_ZVAL(curattr); - curattr = php_dom_create_object(curnode, &ret, curattr, objmap->baseobj TSRMLS_CC); + php_dom_create_object(curnode, curattr, objmap->baseobj TSRMLS_CC); } iterator->curobj = curattr; diff --git a/ext/dom/domerror.c b/ext/dom/domerror.c index cf0eb8da69..cd35b326b7 100644 --- a/ext/dom/domerror.c +++ b/ext/dom/domerror.c @@ -46,10 +46,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ERROR-DOMError-severity Since: */ -int dom_domerror_severity_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domerror_severity_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } @@ -60,10 +59,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ERROR-DOMError-message Since: */ -int dom_domerror_message_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domerror_message_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } @@ -74,10 +72,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ERROR-DOMError-type Since: */ -int dom_domerror_type_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domerror_type_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } @@ -88,10 +85,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ERROR-DOMError-relatedException Since: */ -int dom_domerror_related_exception_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domerror_related_exception_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } @@ -102,10 +98,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ERROR-DOMError-relatedData Since: */ -int dom_domerror_related_data_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domerror_related_data_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } @@ -116,10 +111,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ERROR-DOMError-location Since: */ -int dom_domerror_location_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domerror_location_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } diff --git a/ext/dom/domimplementationlist.c b/ext/dom/domimplementationlist.c index fde89b7d94..07479f52eb 100644 --- a/ext/dom/domimplementationlist.c +++ b/ext/dom/domimplementationlist.c @@ -52,10 +52,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-length Since: */ -int dom_domimplementationlist_length_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domimplementationlist_length_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } diff --git a/ext/dom/domlocator.c b/ext/dom/domlocator.c index 93cd580a01..4e01b3a443 100644 --- a/ext/dom/domlocator.c +++ b/ext/dom/domlocator.c @@ -46,10 +46,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMLocator-line-number Since: */ -int dom_domlocator_line_number_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domlocator_line_number_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } @@ -60,10 +59,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMLocator-column-number Since: */ -int dom_domlocator_column_number_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domlocator_column_number_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } @@ -74,10 +72,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMLocator-offset Since: */ -int dom_domlocator_offset_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domlocator_offset_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } @@ -88,10 +85,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMLocator-node Since: */ -int dom_domlocator_related_node_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domlocator_related_node_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } @@ -102,10 +98,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMLocator-uri Since: */ -int dom_domlocator_uri_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domlocator_uri_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } diff --git a/ext/dom/domstringlist.c b/ext/dom/domstringlist.c index f036fbbdd6..a12d8633ac 100644 --- a/ext/dom/domstringlist.c +++ b/ext/dom/domstringlist.c @@ -52,10 +52,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-length Since: */ -int dom_domstringlist_length_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_domstringlist_length_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, "TEST", 1); + ZVAL_STRING(retval, "TEST"); return SUCCESS; } diff --git a/ext/dom/element.c b/ext/dom/element.c index b570471b7d..5ecf031c4c 100644 --- a/ext/dom/element.c +++ b/ext/dom/element.c @@ -219,14 +219,12 @@ PHP_METHOD(domelement, __construct) xmlNodeSetContentLen(nodep, (xmlChar *) value, value_len); } - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); - if (intern != NULL) { - oldnode = dom_object_get_node(intern); - if (oldnode != NULL) { - php_libxml_node_free_resource(oldnode TSRMLS_CC); - } - php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC); + intern = Z_DOMOBJ_P(id); + oldnode = dom_object_get_node(intern); + if (oldnode != NULL) { + php_libxml_node_free_resource(oldnode TSRMLS_CC); } + php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC); } /* }}} end DOMElement::__construct */ @@ -235,7 +233,7 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-104682815 Since: */ -int dom_element_tag_name_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_element_tag_name_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlNodePtr nodep; xmlNsPtr ns; @@ -248,16 +246,15 @@ int dom_element_tag_name_read(dom_object *obj, zval **retval TSRMLS_DC) return FAILURE; } - ALLOC_ZVAL(*retval); ns = nodep->ns; if (ns != NULL && ns->prefix) { qname = xmlStrdup(ns->prefix); qname = xmlStrcat(qname, (xmlChar *)":"); qname = xmlStrcat(qname, nodep->name); - ZVAL_STRING(*retval, (char *)qname, 1); + ZVAL_STRING(retval, (char *)qname); xmlFree(qname); } else { - ZVAL_STRING(*retval, (char *) nodep->name, 1); + ZVAL_STRING(retval, (char *) nodep->name); } return SUCCESS; @@ -270,10 +267,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Element-schemaTypeInfo Since: DOM Level 3 */ -int dom_element_schema_type_info_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_element_schema_type_info_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_NULL(*retval); + ZVAL_NULL(retval); return SUCCESS; } @@ -359,7 +355,7 @@ PHP_FUNCTION(dom_element_get_attribute) if (value == NULL) { RETURN_EMPTY_STRING(); } else { - RETVAL_STRING((char *)value, 1); + RETVAL_STRING((char *)value); xmlFree(value); } } @@ -648,7 +644,7 @@ PHP_FUNCTION(dom_element_get_elements_by_tag_name) DOM_GET_OBJ(elemp, id, xmlNodePtr, intern); php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC); - namednode = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC); + namednode = Z_DOMOBJ_P(return_value); local = xmlCharStrndup(name, name_len); dom_namednode_iter(intern, 0, namednode, NULL, local, NULL TSRMLS_CC); } @@ -677,13 +673,13 @@ PHP_FUNCTION(dom_element_get_attribute_ns) strattr = xmlGetNsProp(elemp, (xmlChar *) name, (xmlChar *) uri); if (strattr != NULL) { - RETVAL_STRING((char *)strattr, 1); + RETVAL_STRING((char *)strattr); xmlFree(strattr); } else { if (xmlStrEqual((xmlChar *) uri, (xmlChar *)DOM_XMLNS_NAMESPACE)) { nsptr = dom_get_nsdecl(elemp, (xmlChar *)name); if (nsptr != NULL) { - RETVAL_STRING((char *) nsptr->href, 1); + RETVAL_STRING((char *) nsptr->href); } else { RETVAL_EMPTY_STRING(); } @@ -1042,7 +1038,7 @@ PHP_FUNCTION(dom_element_get_elements_by_tag_name_ns) DOM_GET_OBJ(elemp, id, xmlNodePtr, intern); php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC); - namednode = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC); + namednode = Z_DOMOBJ_P(return_value); local = xmlCharStrndup(name, name_len); nsuri = xmlCharStrndup(uri, uri_len); dom_namednode_iter(intern, 0, namednode, NULL, local, nsuri TSRMLS_CC); diff --git a/ext/dom/entity.c b/ext/dom/entity.c index 803bb70eec..264683e28b 100644 --- a/ext/dom/entity.c +++ b/ext/dom/entity.c @@ -44,22 +44,19 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-D7303025 Since: */ -int dom_entity_public_id_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_entity_public_id_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlEntity *nodep; - - nodep = (xmlEntity *) dom_object_get_node(obj); + xmlEntity *nodep = (xmlEntity *) dom_object_get_node(obj); if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); if (nodep->etype != XML_EXTERNAL_GENERAL_UNPARSED_ENTITY) { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); } else { - ZVAL_STRING(*retval, (char *) (nodep->ExternalID), 1); + ZVAL_STRING(retval, (char *) (nodep->ExternalID)); } return SUCCESS; @@ -72,22 +69,19 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-D7C29F3E Since: */ -int dom_entity_system_id_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_entity_system_id_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlEntity *nodep; - - nodep = (xmlEntity *) dom_object_get_node(obj); + xmlEntity *nodep = (xmlEntity *) dom_object_get_node(obj); if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); if (nodep->etype != XML_EXTERNAL_GENERAL_UNPARSED_ENTITY) { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); } else { - ZVAL_STRING(*retval, (char *) (nodep->SystemID), 1); + ZVAL_STRING(retval, (char *) (nodep->SystemID)); } return SUCCESS; @@ -100,24 +94,21 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-6ABAEB38 Since: */ -int dom_entity_notation_name_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_entity_notation_name_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlEntity *nodep; + xmlEntity *nodep = (xmlEntity *) dom_object_get_node(obj); char *content; - nodep = (xmlEntity *) dom_object_get_node(obj); - if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); if (nodep->etype != XML_EXTERNAL_GENERAL_UNPARSED_ENTITY) { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); } else { content = xmlNodeGetContent((xmlNodePtr) nodep); - ZVAL_STRING(*retval, content, 1); + ZVAL_STRING(retval, content); xmlFree(content); } @@ -131,10 +122,9 @@ readonly=no URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Entity3-actualEncoding Since: DOM Level 3 */ -int dom_entity_actual_encoding_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_entity_actual_encoding_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_NULL(*retval); + ZVAL_NULL(retval); return SUCCESS; } @@ -150,10 +140,9 @@ readonly=no URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Entity3-encoding Since: DOM Level 3 */ -int dom_entity_encoding_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_entity_encoding_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_NULL(*retval); + ZVAL_NULL(retval); return SUCCESS; } @@ -169,10 +158,9 @@ readonly=no URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Entity3-version Since: DOM Level 3 */ -int dom_entity_version_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_entity_version_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_NULL(*retval); + ZVAL_NULL(retval); return SUCCESS; } diff --git a/ext/dom/entityreference.c b/ext/dom/entityreference.c index f2fe3945da..bc03385116 100644 --- a/ext/dom/entityreference.c +++ b/ext/dom/entityreference.c @@ -77,7 +77,7 @@ PHP_METHOD(domentityreference, __construct) RETURN_FALSE; } - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); if (intern != NULL) { oldnode = dom_object_get_node(intern); if (oldnode != NULL) { diff --git a/ext/dom/namednodemap.c b/ext/dom/namednodemap.c index d3c8cee558..13acf5cbce 100644 --- a/ext/dom/namednodemap.c +++ b/ext/dom/namednodemap.c @@ -83,7 +83,7 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D0FB19E Since: */ -int dom_namednodemap_length_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_namednodemap_length_read(dom_object *obj, zval *retval TSRMLS_DC) { dom_nnodemap_object *objmap; xmlAttrPtr curnode; @@ -113,8 +113,7 @@ int dom_namednodemap_length_read(dom_object *obj, zval **retval TSRMLS_DC) } } - MAKE_STD_ZVAL(*retval); - ZVAL_LONG(*retval, count); + ZVAL_LONG(retval, count); return SUCCESS; } @@ -140,7 +139,7 @@ PHP_FUNCTION(dom_namednodemap_get_named_item) return; } - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); objmap = (dom_nnodemap_object *)intern->ptr; @@ -214,7 +213,7 @@ PHP_FUNCTION(dom_namednodemap_item) return; } if (index >= 0) { - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); objmap = (dom_nnodemap_object *)intern->ptr; @@ -272,7 +271,7 @@ PHP_FUNCTION(dom_namednodemap_get_named_item_ns) return; } - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); objmap = (dom_nnodemap_object *)intern->ptr; diff --git a/ext/dom/node.c b/ext/dom/node.c index ae74ea04cf..920581423e 100644 --- a/ext/dom/node.c +++ b/ext/dom/node.c @@ -196,7 +196,7 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68D095 Since: */ -int dom_node_node_name_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_node_name_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlNode *nodep; xmlNsPtr ns; @@ -262,12 +262,10 @@ int dom_node_node_name_read(dom_object *obj, zval **retval TSRMLS_DC) php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid Node Type"); } - ALLOC_ZVAL(*retval); - - if(str != NULL) { - ZVAL_STRING(*retval, str, 1); + if (str != NULL) { + ZVAL_STRING(retval, str); } else { - ZVAL_EMPTY_STRING(*retval); + ZVAL_EMPTY_STRING(retval); } if (qname != NULL) { @@ -285,13 +283,11 @@ readonly=no URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68D080 Since: */ -int dom_node_node_value_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_node_value_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlNode *nodep; + xmlNode *nodep = dom_object_get_node(obj); char *str = NULL; - nodep = dom_object_get_node(obj); - if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; @@ -315,26 +311,20 @@ int dom_node_node_value_read(dom_object *obj, zval **retval TSRMLS_DC) break; } - ALLOC_ZVAL(*retval); - if(str != NULL) { - ZVAL_STRING(*retval, str, 1); + ZVAL_STRING(retval, str); xmlFree(str); } else { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); } - return SUCCESS; } int dom_node_node_value_write(dom_object *obj, zval *newval TSRMLS_DC) { - xmlNode *nodep; - zval value_copy; - - nodep = dom_object_get_node(obj); + xmlNode *nodep = dom_object_get_node(obj); if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); @@ -352,19 +342,12 @@ int dom_node_node_value_write(dom_object *obj, zval *newval TSRMLS_DC) case XML_COMMENT_NODE: case XML_CDATA_SECTION_NODE: case XML_PI_NODE: - if (newval->type != IS_STRING) { - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_string(newval); - } - xmlNodeSetContentLen(nodep, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1); - if (newval == &value_copy) { - zval_dtor(newval); + { + zend_string *str = zval_get_string(newval TSRMLS_CC); + xmlNodeSetContentLen(nodep, str->val, str->len + 1); + STR_RELEASE(str); + break; } - break; default: break; } @@ -379,7 +362,7 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-111237558 Since: */ -int dom_node_node_type_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_node_type_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlNode *nodep; @@ -390,13 +373,11 @@ int dom_node_node_type_read(dom_object *obj, zval **retval TSRMLS_DC) return FAILURE; } - ALLOC_ZVAL(*retval); - /* Specs dictate that they are both type XML_DOCUMENT_TYPE_NODE */ if (nodep->type == XML_DTD_NODE) { - ZVAL_LONG(*retval, XML_DOCUMENT_TYPE_NODE); + ZVAL_LONG(retval, XML_DOCUMENT_TYPE_NODE); } else { - ZVAL_LONG(*retval, nodep->type); + ZVAL_LONG(retval, nodep->type); } return SUCCESS; @@ -409,10 +390,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1060184317 Since: */ -int dom_node_parent_node_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_parent_node_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlNode *nodep, *nodeparent; - int ret; nodep = dom_object_get_node(obj); @@ -421,18 +401,13 @@ int dom_node_parent_node_read(dom_object *obj, zval **retval TSRMLS_DC) return FAILURE; } - ALLOC_ZVAL(*retval); - nodeparent = nodep->parent; if (!nodeparent) { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); return SUCCESS; } - if (NULL == (*retval = php_dom_create_object(nodeparent, &ret, *retval, obj TSRMLS_CC))) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object"); - return FAILURE; - } + php_dom_create_object(nodeparent, retval, obj TSRMLS_CC); return SUCCESS; } @@ -443,25 +418,21 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1451460987 Since: */ -int dom_node_child_nodes_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_child_nodes_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlNode *nodep; + xmlNode *nodep = dom_object_get_node(obj); dom_object *intern; - nodep = dom_object_get_node(obj); - if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); - if (dom_node_children_valid(nodep) == FAILURE) { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); } else { - php_dom_create_interator(*retval, DOM_NODELIST TSRMLS_CC); - intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC); + php_dom_create_interator(retval, DOM_NODELIST TSRMLS_CC); + intern = Z_DOMOBJ_P(retval); dom_namednode_iter(obj, XML_ELEMENT_NODE, intern, NULL, NULL, NULL TSRMLS_CC); } @@ -475,10 +446,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-169727388 Since: */ -int dom_node_first_child_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_first_child_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlNode *nodep, *first = NULL; - int ret; nodep = dom_object_get_node(obj); @@ -491,17 +461,12 @@ int dom_node_first_child_read(dom_object *obj, zval **retval TSRMLS_DC) first = nodep->children; } - ALLOC_ZVAL(*retval); - if (!first) { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); return SUCCESS; } - if (NULL == (*retval = php_dom_create_object(first, &ret, *retval, obj TSRMLS_CC))) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object"); - return FAILURE; - } + php_dom_create_object(first, retval, obj TSRMLS_CC); return SUCCESS; } @@ -512,10 +477,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-61AD09FB Since: */ -int dom_node_last_child_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_last_child_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlNode *nodep, *last = NULL; - int ret; nodep = dom_object_get_node(obj); @@ -528,17 +492,12 @@ int dom_node_last_child_read(dom_object *obj, zval **retval TSRMLS_DC) last = nodep->last; } - ALLOC_ZVAL(*retval); - if (!last) { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); return SUCCESS; } - if (NULL == (*retval = php_dom_create_object(last, &ret, *retval, obj TSRMLS_CC))) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object"); - return FAILURE; - } + php_dom_create_object(last, retval, obj TSRMLS_CC); return SUCCESS; } @@ -549,10 +508,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-640FB3C8 Since: */ -int dom_node_previous_sibling_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_previous_sibling_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlNode *nodep, *prevsib; - int ret; nodep = dom_object_get_node(obj); @@ -561,18 +519,13 @@ int dom_node_previous_sibling_read(dom_object *obj, zval **retval TSRMLS_DC) return FAILURE; } - ALLOC_ZVAL(*retval); - prevsib = nodep->prev; if (!prevsib) { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); return SUCCESS; } - if (NULL == (*retval = php_dom_create_object(prevsib, &ret, *retval, obj TSRMLS_CC))) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object"); - return FAILURE; - } + php_dom_create_object(prevsib, retval, obj TSRMLS_CC); return SUCCESS; } @@ -583,10 +536,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6AC54C2F Since: */ -int dom_node_next_sibling_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_next_sibling_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlNode *nodep, *nextsib; - int ret; nodep = dom_object_get_node(obj); @@ -600,12 +552,7 @@ int dom_node_next_sibling_read(dom_object *obj, zval **retval TSRMLS_DC) return FAILURE; } - ALLOC_ZVAL(*retval); - - if (NULL == (*retval = php_dom_create_object(nextsib, &ret, *retval, obj TSRMLS_CC))) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object"); - return FAILURE; - } + php_dom_create_object(nextsib, retval, obj TSRMLS_CC); return SUCCESS; } @@ -616,26 +563,22 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-84CF096 Since: */ -int dom_node_attributes_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_attributes_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlNode *nodep; + xmlNode *nodep = dom_object_get_node(obj); dom_object *intern; - nodep = dom_object_get_node(obj); - if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); - if (nodep->type == XML_ELEMENT_NODE) { - php_dom_create_interator(*retval, DOM_NAMEDNODEMAP TSRMLS_CC); - intern = (dom_object *)zend_objects_get_address(*retval TSRMLS_CC); + php_dom_create_interator(retval, DOM_NAMEDNODEMAP TSRMLS_CC); + intern = Z_DOMOBJ_P(retval); dom_namednode_iter(obj, XML_ATTRIBUTE_NODE, intern, NULL, NULL, NULL TSRMLS_CC); } else { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); } return SUCCESS; @@ -648,13 +591,10 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-node-ownerDoc Since: */ -int dom_node_owner_document_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_owner_document_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlNode *nodep; + xmlNode *nodep = dom_object_get_node(obj); xmlDocPtr docp; - int ret; - - nodep = dom_object_get_node(obj); if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); @@ -662,8 +602,7 @@ int dom_node_owner_document_read(dom_object *obj, zval **retval TSRMLS_DC) } if (nodep->type == XML_DOCUMENT_NODE || nodep->type == XML_HTML_DOCUMENT_NODE) { - ALLOC_ZVAL(*retval); - ZVAL_NULL(*retval); + ZVAL_NULL(retval); return SUCCESS; } @@ -672,12 +611,7 @@ int dom_node_owner_document_read(dom_object *obj, zval **retval TSRMLS_DC) return FAILURE; } - ALLOC_ZVAL(*retval); - - if (NULL == (*retval = php_dom_create_object((xmlNodePtr) docp, &ret, *retval, obj TSRMLS_CC))) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object"); - return FAILURE; - } + php_dom_create_object((xmlNodePtr) docp, retval, obj TSRMLS_CC); return SUCCESS; } @@ -688,13 +622,11 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeNSname Since: DOM Level 2 */ -int dom_node_namespace_uri_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_namespace_uri_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlNode *nodep; + xmlNode *nodep = dom_object_get_node(obj); char *str = NULL; - nodep = dom_object_get_node(obj); - if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; @@ -713,12 +645,10 @@ int dom_node_namespace_uri_read(dom_object *obj, zval **retval TSRMLS_DC) break; } - ALLOC_ZVAL(*retval); - - if(str != NULL) { - ZVAL_STRING(*retval, str, 1); + if (str != NULL) { + ZVAL_STRING(retval, str); } else { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); } return SUCCESS; @@ -731,14 +661,12 @@ readonly=no URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeNSPrefix Since: DOM Level 2 */ -int dom_node_prefix_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_prefix_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlNode *nodep; + xmlNode *nodep = dom_object_get_node(obj); xmlNsPtr ns; char *str = NULL; - nodep = dom_object_get_node(obj); - if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; @@ -758,12 +686,10 @@ int dom_node_prefix_read(dom_object *obj, zval **retval TSRMLS_DC) break; } - ALLOC_ZVAL(*retval); - if (str == NULL) { - ZVAL_EMPTY_STRING(*retval); + ZVAL_EMPTY_STRING(retval); } else { - ZVAL_STRING(*retval, str, 1); + ZVAL_STRING(retval, str); } return SUCCESS; @@ -771,7 +697,7 @@ int dom_node_prefix_read(dom_object *obj, zval **retval TSRMLS_DC) int dom_node_prefix_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; + zend_string *str; xmlNode *nodep, *nsnode = NULL; xmlNsPtr ns = NULL, curns; char *strURI; @@ -794,15 +720,8 @@ int dom_node_prefix_write(dom_object *obj, zval *newval TSRMLS_DC) nsnode = xmlDocGetRootElement(nodep->doc); } } - if (newval->type != IS_STRING) { - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_string(newval); - } - prefix = Z_STRVAL_P(newval); + str = zval_get_string(newval TSRMLS_CC); + prefix = str->val; if (nsnode && nodep->ns != NULL && !xmlStrEqual(nodep->ns->prefix, (xmlChar *)prefix)) { strURI = (char *) nodep->ns->href; if (strURI == NULL || @@ -826,18 +745,14 @@ int dom_node_prefix_write(dom_object *obj, zval *newval TSRMLS_DC) } if (ns == NULL) { - if (newval == &value_copy) { - zval_dtor(newval); - } + STR_RELEASE(str); php_dom_throw_error(NAMESPACE_ERR, dom_get_strict_error(obj->document) TSRMLS_CC); return FAILURE; } xmlSetNs(nodep, ns); } - if (newval == &value_copy) { - zval_dtor(newval); - } + STR_RELEASE(str); break; default: break; @@ -853,23 +768,19 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeNSLocalN Since: DOM Level 2 */ -int dom_node_local_name_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_local_name_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlNode *nodep; - - nodep = dom_object_get_node(obj); + xmlNode *nodep = dom_object_get_node(obj); if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); - if (nodep->type == XML_ELEMENT_NODE || nodep->type == XML_ATTRIBUTE_NODE || nodep->type == XML_NAMESPACE_DECL) { - ZVAL_STRING(*retval, (char *) (nodep->name), 1); + ZVAL_STRING(retval, (char *) (nodep->name)); } else { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); } return SUCCESS; @@ -882,26 +793,22 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-baseURI Since: DOM Level 3 */ -int dom_node_base_uri_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_base_uri_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlNode *nodep; + xmlNode *nodep = dom_object_get_node(obj); xmlChar *baseuri; - nodep = dom_object_get_node(obj); - if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); - baseuri = xmlNodeGetBase(nodep->doc, nodep); if (baseuri) { - ZVAL_STRING(*retval, (char *) (baseuri), 1); + ZVAL_STRING(retval, (char *) (baseuri)); xmlFree(baseuri); } else { - ZVAL_NULL(*retval); + ZVAL_NULL(retval); } return SUCCESS; @@ -914,13 +821,11 @@ readonly=no URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-textContent Since: DOM Level 3 */ -int dom_node_text_content_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_node_text_content_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlNode *nodep; + xmlNode *nodep = dom_object_get_node(obj); char *str = NULL; - nodep = dom_object_get_node(obj); - if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; @@ -928,13 +833,11 @@ int dom_node_text_content_read(dom_object *obj, zval **retval TSRMLS_DC) str = xmlNodeGetContent(nodep); - ALLOC_ZVAL(*retval); - - if(str != NULL) { - ZVAL_STRING(*retval, str, 1); + if (str != NULL) { + ZVAL_STRING(retval, str); xmlFree(str); } else { - ZVAL_EMPTY_STRING(*retval); + ZVAL_EMPTY_STRING(retval); } return SUCCESS; @@ -1629,7 +1532,7 @@ PHP_FUNCTION(dom_node_lookup_prefix) if (lookupp != NULL && (nsptr = xmlSearchNsByHref(lookupp->doc, lookupp, uri))) { if (nsptr->prefix != NULL) { - RETURN_STRING((char *) nsptr->prefix, 1); + RETURN_STRING((char *) nsptr->prefix); } } } @@ -1698,7 +1601,7 @@ PHP_FUNCTION(dom_node_lookup_namespace_uri) nsptr = xmlSearchNs(nodep->doc, nodep, prefix); if (nsptr && nsptr->href != NULL) { - RETURN_STRING((char *) nsptr->href, 1); + RETURN_STRING((char *) nsptr->href); } RETURN_NULL(); @@ -1804,12 +1707,12 @@ static void dom_canonicalization(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ } else { /*xpath query from xpath_array */ HashTable *ht = Z_ARRVAL_P(xpath_array); - zval **tmp; + zval *tmp; char *xquery; - if (zend_hash_find(ht, "query", sizeof("query"), (void**)&tmp) == SUCCESS && - Z_TYPE_PP(tmp) == IS_STRING) { - xquery = Z_STRVAL_PP(tmp); + tmp = zend_hash_str_find(ht, "query", sizeof("query")-1); + if (tmp && Z_TYPE_P(tmp) == IS_STRING) { + xquery = Z_STRVAL_P(tmp); } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "'query' missing from xpath array or is not a string"); RETURN_FALSE; @@ -1818,21 +1721,20 @@ static void dom_canonicalization(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ ctxp = xmlXPathNewContext(docp); ctxp->node = nodep; - if (zend_hash_find(ht, "namespaces", sizeof("namespaces"), (void**)&tmp) == SUCCESS && - Z_TYPE_PP(tmp) == IS_ARRAY) { - zval **tmpns; - while (zend_hash_get_current_data(Z_ARRVAL_PP(tmp), (void **)&tmpns) == SUCCESS) { - if (Z_TYPE_PP(tmpns) == IS_STRING) { - char *prefix; + tmp = zend_hash_str_find(ht, "namespaces", sizeof("namespaces")-1); + if (tmp && Z_TYPE_P(tmp) == IS_ARRAY) { + zval *tmpns; + while ((tmpns = zend_hash_get_current_data(Z_ARRVAL_P(tmp)))) { + if (Z_TYPE_P(tmpns) == IS_STRING) { + zend_string *prefix; ulong idx; - uint prefix_key_len; - if (zend_hash_get_current_key_ex(Z_ARRVAL_PP(tmp), - &prefix, &prefix_key_len, &idx, 0, NULL) == HASH_KEY_IS_STRING) { - xmlXPathRegisterNs(ctxp, prefix, Z_STRVAL_PP(tmpns)); + if (zend_hash_get_current_key_ex(Z_ARRVAL_P(tmp), + &prefix, &idx, 0, NULL) == HASH_KEY_IS_STRING) { + xmlXPathRegisterNs(ctxp, prefix->val, Z_STRVAL_P(tmpns)); } } - zend_hash_move_forward(Z_ARRVAL_PP(tmp)); + zend_hash_move_forward(Z_ARRVAL_P(tmp)); } } @@ -1852,14 +1754,14 @@ static void dom_canonicalization(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ if (ns_prefixes != NULL) { if (exclusive) { - zval **tmpns; + zval *tmpns; int nscount = 0; inclusive_ns_prefixes = safe_emalloc(zend_hash_num_elements(Z_ARRVAL_P(ns_prefixes)) + 1, sizeof(xmlChar *), 0); - while (zend_hash_get_current_data(Z_ARRVAL_P(ns_prefixes), (void **)&tmpns) == SUCCESS) { - if (Z_TYPE_PP(tmpns) == IS_STRING) { - inclusive_ns_prefixes[nscount++] = Z_STRVAL_PP(tmpns); + while ((tmpns = zend_hash_get_current_data(Z_ARRVAL_P(ns_prefixes)))) { + if (Z_TYPE_P(tmpns) == IS_STRING) { + inclusive_ns_prefixes[nscount++] = Z_STRVAL_P(tmpns); } zend_hash_move_forward(Z_ARRVAL_P(ns_prefixes)); } @@ -1902,9 +1804,9 @@ static void dom_canonicalization(INTERNAL_FUNCTION_PARAMETERS, int mode) /* {{{ #endif if (ret > 0) { #ifdef LIBXML2_NEW_BUFFER - RETVAL_STRINGL((char *) xmlOutputBufferGetContent(buf), ret, 1); + RETVAL_STRINGL((char *) xmlOutputBufferGetContent(buf), ret); #else - RETVAL_STRINGL((char *) buf->buffer->content, ret, 1); + RETVAL_STRINGL((char *) buf->buffer->content, ret); #endif } else { RETVAL_EMPTY_STRING(); @@ -1954,7 +1856,7 @@ PHP_METHOD(domnode, getNodePath) if (value == NULL) { RETURN_NULL(); } else { - RETVAL_STRING(value, 1); + RETVAL_STRING(value); xmlFree(value); } } diff --git a/ext/dom/nodelist.c b/ext/dom/nodelist.c index 1a0c811185..86330c8348 100644 --- a/ext/dom/nodelist.c +++ b/ext/dom/nodelist.c @@ -51,7 +51,7 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-203510337 Since: */ -int dom_nodelist_length_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_nodelist_length_read(dom_object *obj, zval *retval TSRMLS_DC) { dom_nnodemap_object *objmap; xmlNodePtr nodep, curnode; @@ -91,8 +91,7 @@ int dom_nodelist_length_read(dom_object *obj, zval **retval TSRMLS_DC) } } - MAKE_STD_ZVAL(*retval); - ZVAL_LONG(*retval, count); + ZVAL_LONG(retval, count); return SUCCESS; } @@ -113,15 +112,13 @@ PHP_FUNCTION(dom_nodelist_item) dom_nnodemap_object *objmap; xmlNodePtr nodep, curnode; int count = 0; - HashTable *nodeht; - zval **entry; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &id, dom_nodelist_class_entry, &index) == FAILURE) { return; } if (index >= 0) { - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); objmap = (dom_nnodemap_object *)intern->ptr; if (objmap != NULL) { @@ -133,10 +130,10 @@ PHP_FUNCTION(dom_nodelist_item) } } else { if (objmap->nodetype == DOM_NODESET) { - nodeht = HASH_OF(objmap->baseobjptr); - if (zend_hash_index_find(nodeht, index, (void **) &entry)==SUCCESS) { - *return_value = **entry; - zval_copy_ctor(return_value); + HashTable *nodeht = HASH_OF(objmap->baseobjptr); + zval *entry = zend_hash_index_find(nodeht, index); + if (entry) { + ZVAL_COPY(return_value, entry); return; } } else if (objmap->baseobj) { diff --git a/ext/dom/notation.c b/ext/dom/notation.c index 4c0258cc1f..dc63f1516d 100644 --- a/ext/dom/notation.c +++ b/ext/dom/notation.c @@ -45,22 +45,19 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-54F2B4D0 Since: */ -int dom_notation_public_id_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_notation_public_id_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlEntityPtr nodep; - - nodep = (xmlEntityPtr) dom_object_get_node(obj); + xmlEntityPtr nodep = (xmlEntityPtr) dom_object_get_node(obj); if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); if (nodep->ExternalID) { - ZVAL_STRING(*retval, (char *) (nodep->ExternalID), 1); + ZVAL_STRING(retval, (char *) (nodep->ExternalID)); } else { - ZVAL_EMPTY_STRING(*retval); + ZVAL_EMPTY_STRING(retval); } return SUCCESS; @@ -73,22 +70,19 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-E8AAB1D0 Since: */ -int dom_notation_system_id_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_notation_system_id_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlEntityPtr nodep; - - nodep = (xmlEntityPtr) dom_object_get_node(obj); + xmlEntityPtr nodep = (xmlEntityPtr) dom_object_get_node(obj); if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); if (nodep->SystemID) { - ZVAL_STRING(*retval, (char *) (nodep->SystemID), 1); + ZVAL_STRING(retval, (char *) (nodep->SystemID)); } else { - ZVAL_EMPTY_STRING(*retval); + ZVAL_EMPTY_STRING(retval); } return SUCCESS; diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c index ab5a7d7844..cc6c970377 100644 --- a/ext/dom/php_dom.c +++ b/ext/dom/php_dom.c @@ -469,8 +469,8 @@ void *php_dom_export_node(zval *object TSRMLS_DC) /* {{{ */ php_libxml_node_object *intern; xmlNodePtr nodep = NULL; - intern = (php_libxml_node_object *)zend_object_store_get_object(object TSRMLS_CC); - if (intern && intern->node) { + intern = Z_DOMOBJ_P(object); + if (intern->node) { nodep = intern->node->node; } @@ -491,7 +491,7 @@ PHP_FUNCTION(dom_import_simplexml) return; } - nodeobj = (php_libxml_node_object *)zend_object_store_get_object(node TSRMLS_CC); + nodeobj = Z_DOMOBJ_P(node); nodep = php_libxml_import_node(node TSRMLS_CC); if (nodep && nodeobj && (nodep->type == XML_ELEMENT_NODE || nodep->type == XML_ATTRIBUTE_NODE)) { diff --git a/ext/dom/processinginstruction.c b/ext/dom/processinginstruction.c index 5a415efc80..aef9e92b64 100644 --- a/ext/dom/processinginstruction.c +++ b/ext/dom/processinginstruction.c @@ -50,7 +50,6 @@ const zend_function_entry php_dom_processinginstruction_class_functions[] = { /* {{{ proto void DOMProcessingInstruction::__construct(string name, [string value]); */ PHP_METHOD(domprocessinginstruction, __construct) { - zval *id; xmlNodePtr nodep = NULL, oldnode = NULL; dom_object *intern; @@ -79,14 +78,12 @@ PHP_METHOD(domprocessinginstruction, __construct) RETURN_FALSE; } - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); - if (intern != NULL) { - oldnode = dom_object_get_node(intern); - if (oldnode != NULL) { - php_libxml_node_free_resource(oldnode TSRMLS_CC); - } - php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC); + intern = Z_DOMOBJ_P(id); + oldnode = dom_object_get_node(intern); + if (oldnode != NULL) { + php_libxml_node_free_resource(oldnode TSRMLS_CC); } + php_libxml_increment_node_ptr((php_libxml_node_object *)intern, nodep, (void *)intern TSRMLS_CC); } /* }}} end DOMProcessingInstruction::__construct */ @@ -95,19 +92,16 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-1478689192 Since: */ -int dom_processinginstruction_target_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_processinginstruction_target_read(dom_object *obj, zval *retval TSRMLS_DC) { - xmlNodePtr nodep; - - nodep = dom_object_get_node(obj); + xmlNodePtr nodep = dom_object_get_node(obj); if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - ALLOC_ZVAL(*retval); - ZVAL_STRING(*retval, (char *) (nodep->name), 1); + ZVAL_STRING(retval, (char *) (nodep->name)); return SUCCESS; } @@ -119,7 +113,7 @@ readonly=no URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-837822393 Since: */ -int dom_processinginstruction_data_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_processinginstruction_data_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlNodePtr nodep; xmlChar *content; @@ -131,14 +125,11 @@ int dom_processinginstruction_data_read(dom_object *obj, zval **retval TSRMLS_DC return FAILURE; } - ALLOC_ZVAL(*retval); - - if ((content = xmlNodeGetContent(nodep)) != NULL) { - ZVAL_STRING(*retval, content, 1); + ZVAL_STRING(retval, content); xmlFree(content); } else { - ZVAL_EMPTY_STRING(*retval); + ZVAL_EMPTY_STRING(retval); } return SUCCESS; @@ -146,31 +137,19 @@ int dom_processinginstruction_data_read(dom_object *obj, zval **retval TSRMLS_DC int dom_processinginstruction_data_write(dom_object *obj, zval *newval TSRMLS_DC) { - zval value_copy; - xmlNode *nodep; - - nodep = dom_object_get_node(obj); + xmlNode *nodep = dom_object_get_node(obj); + zend_string *str; if (nodep == NULL) { php_dom_throw_error(INVALID_STATE_ERR, 0 TSRMLS_CC); return FAILURE; } - if (newval->type != IS_STRING) { - if(Z_REFCOUNT_P(newval) > 1) { - value_copy = *newval; - zval_copy_ctor(&value_copy); - newval = &value_copy; - } - convert_to_string(newval); - } + str = zval_get_string(newval TSRMLS_CC); - xmlNodeSetContentLen(nodep, Z_STRVAL_P(newval), Z_STRLEN_P(newval) + 1); - - if (newval == &value_copy) { - zval_dtor(newval); - } + xmlNodeSetContentLen(nodep, str->val, str->len + 1); + STR_RELEASE(str); return SUCCESS; } diff --git a/ext/dom/text.c b/ext/dom/text.c index 212d040873..cccc44b311 100644 --- a/ext/dom/text.c +++ b/ext/dom/text.c @@ -86,7 +86,7 @@ PHP_METHOD(domtext, __construct) RETURN_FALSE; } - intern = (dom_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); if (intern != NULL) { oldnode = dom_object_get_node(intern); if (oldnode != NULL) { @@ -102,7 +102,7 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-wholeText Since: DOM Level 3 */ -int dom_text_whole_text_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_text_whole_text_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlNodePtr node; xmlChar *wholetext = NULL; @@ -125,12 +125,11 @@ int dom_text_whole_text_read(dom_object *obj, zval **retval TSRMLS_DC) node = node->next; } - ALLOC_ZVAL(*retval); if (wholetext != NULL) { - ZVAL_STRING(*retval, wholetext, 1); + ZVAL_STRING(retval, wholetext); xmlFree(wholetext); } else { - ZVAL_EMPTY_STRING(*retval); + ZVAL_EMPTY_STRING(retval); } return SUCCESS; @@ -151,7 +150,6 @@ PHP_FUNCTION(dom_text_split_text) xmlNodePtr node; xmlNodePtr nnode; long offset; - int ret; int length; dom_object *intern; @@ -196,7 +194,7 @@ PHP_FUNCTION(dom_text_split_text) nnode->type = XML_TEXT_NODE; } - return_value = php_dom_create_object(nnode, &ret, return_value, intern TSRMLS_CC); + php_dom_create_object(nnode, return_value, intern TSRMLS_CC); } /* }}} end dom_text_split_text */ diff --git a/ext/dom/typeinfo.c b/ext/dom/typeinfo.c index 3742780ab7..5a437dc332 100644 --- a/ext/dom/typeinfo.c +++ b/ext/dom/typeinfo.c @@ -46,10 +46,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#TypeInfo-typeName Since: */ -int dom_typeinfo_type_name_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_typeinfo_type_name_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_NULL(*retval); + ZVAL_NULL(retval); return SUCCESS; } @@ -60,10 +59,9 @@ readonly=yes URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#TypeInfo-typeNamespace Since: */ -int dom_typeinfo_type_namespace_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_typeinfo_type_namespace_read(dom_object *obj, zval *retval TSRMLS_DC) { - ALLOC_ZVAL(*retval); - ZVAL_NULL(*retval); + ZVAL_NULL(retval); return SUCCESS; } diff --git a/ext/dom/xpath.c b/ext/dom/xpath.c index a7540ba38d..549669e756 100644 --- a/ext/dom/xpath.c +++ b/ext/dom/xpath.c @@ -74,15 +74,13 @@ const zend_function_entry php_dom_xpath_class_functions[] = { static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs, int type) /* {{{ */ { - zval **args = NULL; - zval *retval; - int result, i, ret; + zval retval; + int result, i; int error = 0; zend_fcall_info fci; - zval handler; xmlXPathObjectPtr obj; char *str; - char *callable = NULL; + zend_string *callable = NULL; dom_xpath_object *intern; TSRMLS_FETCH(); @@ -115,36 +113,33 @@ static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs, fci.param_count = nargs - 1; if (fci.param_count > 0) { - fci.params = safe_emalloc(fci.param_count, sizeof(zval**), 0); - args = safe_emalloc(fci.param_count, sizeof(zval *), 0); + fci.params = safe_emalloc(fci.param_count, sizeof(zval), 0); } /* Reverse order to pop values off ctxt stack */ for (i = nargs - 2; i >= 0; i--) { obj = valuePop(ctxt); - MAKE_STD_ZVAL(args[i]); switch (obj->type) { case XPATH_STRING: - ZVAL_STRING(args[i], (char *)obj->stringval, 1); + ZVAL_STRING(&fci.params[i], (char *)obj->stringval); break; case XPATH_BOOLEAN: - ZVAL_BOOL(args[i], obj->boolval); + ZVAL_BOOL(&fci.params[i], obj->boolval); break; case XPATH_NUMBER: - ZVAL_DOUBLE(args[i], obj->floatval); + ZVAL_DOUBLE(&fci.params[i], obj->floatval); break; case XPATH_NODESET: if (type == 1) { str = (char *)xmlXPathCastToString(obj); - ZVAL_STRING(args[i], str, 1); + ZVAL_STRING(&fci.params[i], str); xmlFree(str); } else if (type == 2) { int j; - array_init(args[i]); + array_init(&fci.params[i]); if (obj->nodesetval && obj->nodesetval->nodeNr > 0) { for (j = 0; j < obj->nodesetval->nodeNr; j++) { xmlNodePtr node = obj->nodesetval->nodeTab[j]; - zval *child; - MAKE_STD_ZVAL(child); + zval child; /* not sure, if we need this... it's copied from xpath.c */ if (node->type == XML_NAMESPACE_DECL) { xmlNsPtr curns; @@ -164,17 +159,16 @@ static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs, node->parent = nsparent; node->ns = curns; } - child = php_dom_create_object(node, &ret, child, (dom_object *)intern TSRMLS_CC); - add_next_index_zval(args[i], child); + php_dom_create_object(node, &child, (dom_object *)intern TSRMLS_CC); + add_next_index_zval(&fci.params[i], &child); } } } break; default: - ZVAL_STRING(args[i], (char *)xmlXPathCastToString(obj), 1); + ZVAL_STRING(&fci.params[i], (char *)xmlXPathCastToString(obj)); } xmlXPathFreeObject(obj); - fci.params[i] = &args[i]; } fci.size = sizeof(fci); @@ -186,70 +180,59 @@ static void dom_xpath_ext_function_php(xmlXPathParserContextPtr ctxt, int nargs, xmlXPathFreeObject(obj); if (fci.param_count > 0) { for (i = 0; i < nargs - 1; i++) { - zval_ptr_dtor(&args[i]); + zval_ptr_dtor(&fci.params[i]); } - efree(args); efree(fci.params); } return; } - INIT_PZVAL(&handler); - ZVAL_STRING(&handler, obj->stringval, 1); + ZVAL_STRING(&fci.function_name, obj->stringval); xmlXPathFreeObject(obj); - fci.function_name = &handler; fci.symbol_table = NULL; - fci.object_ptr = NULL; - fci.retval_ptr_ptr = &retval; + fci.object = NULL; + fci.retval = &retval; fci.no_separation = 0; - if (!zend_make_callable(&handler, &callable TSRMLS_CC)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call handler %s()", callable); + if (!zend_make_callable(&fci.function_name, &callable TSRMLS_CC)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call handler %s()", callable->val); - } else if ( intern->registerPhpFunctions == 2 && zend_hash_exists(intern->registered_phpfunctions, callable, strlen(callable) + 1) == 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not allowed to call handler '%s()'.", callable); + } else if (intern->registerPhpFunctions == 2 && zend_hash_exists(intern->registered_phpfunctions, callable) == 0) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not allowed to call handler '%s()'.", callable->val); /* Push an empty string, so that we at least have an xslt result... */ valuePush(ctxt, xmlXPathNewString((xmlChar *)"")); } else { result = zend_call_function(&fci, NULL TSRMLS_CC); - if (result == FAILURE) { - if (Z_TYPE(handler) == IS_STRING) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call handler %s()", Z_STRVAL_P(&handler)); - } - /* retval is == NULL, when an exception occurred, don't report anything, because PHP itself will handle that */ - } else if (retval == NULL) { - } else { - if (retval->type == IS_OBJECT && instanceof_function( Z_OBJCE_P(retval), dom_node_class_entry TSRMLS_CC)) { + if (result == SUCCESS && Z_TYPE(retval) != IS_UNDEF) { + if (Z_TYPE(retval) == IS_OBJECT && instanceof_function(Z_OBJCE(retval), dom_node_class_entry TSRMLS_CC)) { xmlNode *nodep; dom_object *obj; if (intern->node_list == NULL) { ALLOC_HASHTABLE(intern->node_list); zend_hash_init(intern->node_list, 0, NULL, ZVAL_PTR_DTOR, 0); } - zval_add_ref(&retval); - zend_hash_next_index_insert(intern->node_list, &retval, sizeof(zval *), NULL); - obj = (dom_object *)zend_object_store_get_object(retval TSRMLS_CC); + GC_REFCOUNT(&retval)++; + zend_hash_next_index_insert(intern->node_list, &retval); + obj = Z_DOMOBJ_P(&retval); nodep = dom_object_get_node(obj); valuePush(ctxt, xmlXPathNewNodeSet(nodep)); - } else if (retval->type == IS_BOOL) { - valuePush(ctxt, xmlXPathNewBoolean(retval->value.lval)); - } else if (retval->type == IS_OBJECT) { + } else if (Z_TYPE(retval) == IS_BOOL) { + valuePush(ctxt, xmlXPathNewBoolean(Z_BVAL(retval))); + } else if (Z_TYPE(retval) == IS_OBJECT) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "A PHP Object cannot be converted to a XPath-string"); valuePush(ctxt, xmlXPathNewString((xmlChar *)"")); } else { convert_to_string_ex(&retval); - valuePush(ctxt, xmlXPathNewString( Z_STRVAL_P(retval))); + valuePush(ctxt, xmlXPathNewString( Z_STRVAL(retval))); } zval_ptr_dtor(&retval); } } - efree(callable); - zval_dtor(&handler); + STR_FREE(callable); if (fci.param_count > 0) { for (i = 0; i < nargs - 1; i++) { - zval_ptr_dtor(&args[i]); + zval_ptr_dtor(&fci.params[i]); } - efree(args); efree(fci.params); } } @@ -292,7 +275,7 @@ PHP_METHOD(domxpath, __construct) RETURN_FALSE; } - intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); if (intern != NULL) { oldctx = (xmlXPathContextPtr)intern->ptr; if (oldctx != NULL) { @@ -316,30 +299,16 @@ PHP_METHOD(domxpath, __construct) /* }}} end DOMXPath::__construct */ /* {{{ document DOMDocument*/ -int dom_xpath_document_read(dom_object *obj, zval **retval TSRMLS_DC) +int dom_xpath_document_read(dom_object *obj, zval *retval TSRMLS_DC) { xmlDoc *docp = NULL; - xmlXPathContextPtr ctx; - int ret; - zval *tmp; - - ctx = (xmlXPathContextPtr) obj->ptr; + xmlXPathContextPtr ctx = (xmlXPathContextPtr) obj->ptr; if (ctx) { docp = (xmlDocPtr) ctx->doc; } - ALLOC_ZVAL(*retval); - tmp = *retval; - - if (NULL == (*retval = php_dom_create_object((xmlNodePtr) docp, &ret, *retval, obj TSRMLS_CC))) { - FREE_ZVAL(tmp); - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object"); - return FAILURE; - } - if (tmp != *retval) { - FREE_ZVAL(tmp); - } + php_dom_create_object((xmlNodePtr) docp, retval, obj TSRMLS_CC); return SUCCESS; } /* }}} */ @@ -357,7 +326,7 @@ PHP_FUNCTION(dom_xpath_register_ns) return; } - intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); ctxp = (xmlXPathContextPtr) intern->ptr; if (ctxp == NULL) { @@ -385,11 +354,11 @@ static void dom_xpath_iter(zval *baseobj, dom_object *intern) /* {{{ */ static void php_xpath_eval(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */ { - zval *id, *retval, *context = NULL; + zval *id, retval, *context = NULL; xmlXPathContextPtr ctxp; xmlNodePtr nodep = NULL; xmlXPathObjectPtr xpathobjp; - int expr_len, ret, nsnbr = 0, xpath_type; + int expr_len, nsnbr = 0, xpath_type; dom_xpath_object *intern; dom_object *nodeobj; char *expr; @@ -401,7 +370,7 @@ static void php_xpath_eval(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */ return; } - intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); ctxp = (xmlXPathContextPtr) intern->ptr; if (ctxp == NULL) { @@ -470,16 +439,13 @@ static void php_xpath_eval(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */ int i; xmlNodeSetPtr nodesetp; - MAKE_STD_ZVAL(retval); - array_init(retval); + array_init(&retval); if (xpathobjp->type == XPATH_NODESET && NULL != (nodesetp = xpathobjp->nodesetval)) { for (i = 0; i < nodesetp->nodeNr; i++) { xmlNodePtr node = nodesetp->nodeTab[i]; - zval *child; - - MAKE_STD_ZVAL(child); + zval child; if (node->type == XML_NAMESPACE_DECL) { xmlNsPtr curns; @@ -499,13 +465,13 @@ static void php_xpath_eval(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */ node->parent = nsparent; node->ns = curns; } - child = php_dom_create_object(node, &ret, child, (dom_object *)intern TSRMLS_CC); - add_next_index_zval(retval, child); + php_dom_create_object(node, &child, (dom_object *)intern TSRMLS_CC); + add_next_index_zval(&retval, &child); } } php_dom_create_interator(return_value, DOM_NODELIST TSRMLS_CC); - nodeobj = (dom_object *)zend_objects_get_address(return_value TSRMLS_CC); - dom_xpath_iter(retval, nodeobj); + nodeobj = Z_DOMOBJ_P(return_value); + dom_xpath_iter(&retval, nodeobj); break; } @@ -518,7 +484,7 @@ static void php_xpath_eval(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */ break; case XPATH_STRING: - RETVAL_STRING(xpathobjp->stringval, 1); + RETVAL_STRING(xpathobjp->stringval); break; default: @@ -549,39 +515,32 @@ PHP_FUNCTION(dom_xpath_register_php_functions) { zval *id; dom_xpath_object *intern; - zval *array_value, **entry, *new_string; - int name_len = 0; - char *name; + zval *array_value, *entry, new_string; + zend_string *name; DOM_GET_THIS(id); if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "a", &array_value) == SUCCESS) { - intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); zend_hash_internal_pointer_reset(Z_ARRVAL_P(array_value)); - - while (zend_hash_get_current_data(Z_ARRVAL_P(array_value), (void **)&entry) == SUCCESS) { - SEPARATE_ZVAL(entry); - convert_to_string_ex(entry); - - MAKE_STD_ZVAL(new_string); - ZVAL_LONG(new_string,1); - - zend_hash_update(intern->registered_phpfunctions, Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &new_string, sizeof(zval*), NULL); + while ((entry = zend_hash_get_current_data(Z_ARRVAL_P(array_value)))) { + zend_string *str = zval_get_string(entry TSRMLS_CC); + ZVAL_LONG(&new_string,1); + zend_hash_update(intern->registered_phpfunctions, str, &new_string); zend_hash_move_forward(Z_ARRVAL_P(array_value)); + STR_RELEASE(str); } intern->registerPhpFunctions = 2; RETURN_TRUE; - } else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == SUCCESS) { - intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); + } else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "S", &name) == SUCCESS) { + intern = Z_DOMOBJ_P(id); - MAKE_STD_ZVAL(new_string); - ZVAL_LONG(new_string,1); - zend_hash_update(intern->registered_phpfunctions, name, name_len + 1, &new_string, sizeof(zval*), NULL); + ZVAL_LONG(&new_string, 1); + zend_hash_update(intern->registered_phpfunctions, name, &new_string); intern->registerPhpFunctions = 2; - } else { - intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); + intern = Z_DOMOBJ_P(id); intern->registerPhpFunctions = 1; } |