summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2014-04-15 20:30:41 +0200
committerNikita Popov <nikic@php.net>2014-04-15 20:32:47 +0200
commit3b9fdf37e109102c5811fa7698e6ef2e00f09e24 (patch)
tree186c9aa67cc2712a37d84efe4bd87cb864dff133
parent7a1a6092f652f1c322e3a09f9fb1491775fb4072 (diff)
downloadphp-git-3b9fdf37e109102c5811fa7698e6ef2e00f09e24.tar.gz
Make DOM compile
Just make it compile, not work yet...
-rw-r--r--ext/dom/cdatasection.c12
-rw-r--r--ext/dom/characterdata.c46
-rw-r--r--ext/dom/comment.c2
-rw-r--r--ext/dom/document.c370
-rw-r--r--ext/dom/documentfragment.c14
-rw-r--r--ext/dom/documenttype.c68
-rw-r--r--ext/dom/dom_iterators.c54
-rw-r--r--ext/dom/domerror.c30
-rw-r--r--ext/dom/domimplementationlist.c5
-rw-r--r--ext/dom/domlocator.c25
-rw-r--r--ext/dom/domstringlist.c5
-rw-r--r--ext/dom/element.c34
-rw-r--r--ext/dom/entity.c48
-rw-r--r--ext/dom/entityreference.c2
-rw-r--r--ext/dom/namednodemap.c11
-rw-r--r--ext/dom/node.c288
-rw-r--r--ext/dom/nodelist.c17
-rw-r--r--ext/dom/notation.c22
-rw-r--r--ext/dom/php_dom.c6
-rw-r--r--ext/dom/processinginstruction.c53
-rw-r--r--ext/dom/text.c12
-rw-r--r--ext/dom/typeinfo.c10
-rw-r--r--ext/dom/xpath.c161
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;
}