diff options
Diffstat (limited to 'ext/dom/node.c')
-rw-r--r-- | ext/dom/node.c | 288 |
1 files changed, 95 insertions, 193 deletions
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); } } |