From: Dmitry Stogov Date: Tue, 5 May 2015 09:58:11 +0000 (+0300) Subject: Use better zend_hash_*() functions. X-Git-Tag: PRE_PHP7_NSAPI_REMOVAL~93^2~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a610e8c4c640d8dfef24743fd9fa70ee26c9a199;p=php Use better zend_hash_*() functions. --- diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index a10def195e..f105e8244f 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -1007,26 +1007,24 @@ static void _get_base_node_value(php_sxe_object *sxe_ref, xmlNodePtr node, zval static void sxe_properties_add(HashTable *rv, char *name, int namelen, zval *value) /* {{{ */ { + zend_string *key; zval *data_ptr; zval newptr; - if ((data_ptr = zend_hash_str_find(rv, name, namelen)) != NULL) { + key = zend_string_init(name, namelen, 0); + if ((data_ptr = zend_hash_find(rv, key)) != NULL) { if (Z_TYPE_P(data_ptr) == IS_ARRAY) { - zend_hash_next_index_insert(Z_ARRVAL_P(data_ptr), value); + zend_hash_next_index_insert_new(Z_ARRVAL_P(data_ptr), value); } else { array_init(&newptr); - - if (Z_REFCOUNTED_P(data_ptr)) { - Z_ADDREF_P(data_ptr); - } - zend_hash_next_index_insert(Z_ARRVAL(newptr), data_ptr); - zend_hash_next_index_insert(Z_ARRVAL(newptr), value); - - zend_hash_str_update(rv, name, namelen, &newptr); + zend_hash_next_index_insert_new(Z_ARRVAL(newptr), data_ptr); + zend_hash_next_index_insert_new(Z_ARRVAL(newptr), value); + ZVAL_ARR(data_ptr, Z_ARR(newptr)); } } else { - zend_hash_str_update(rv, name, namelen, value); + zend_hash_add_new(rv, key, value); } + zend_string_release(key); } /* }}} */ @@ -1499,9 +1497,14 @@ SXE_METHOD(asXML) static inline void sxe_add_namespace_name(zval *return_value, xmlNsPtr ns) /* {{{ */ { char *prefix = SXE_NS_PREFIX(ns); - if (zend_hash_str_exists(Z_ARRVAL_P(return_value), prefix, strlen(prefix)) == 0) { - add_assoc_string(return_value, prefix, (char*)ns->href); + zend_string *key = zend_string_init(prefix, strlen(prefix), 0); + zval zv; + + if (!zend_hash_exists(Z_ARRVAL_P(return_value), key)) { + ZVAL_STRING(&zv, (char*)ns->href); + zend_hash_add_new(Z_ARRVAL_P(return_value), key, &zv); } + zend_string_release(key); } /* }}} */