diff options
author | Xinchen Hui <laruence@php.net> | 2014-05-16 19:13:01 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2014-05-16 19:13:01 +0800 |
commit | c7face7702dc2078956e3ea2749045ef34c17939 (patch) | |
tree | d8ce6707cae58c540d770738b3f9c1c1f72a958d /ext/soap/php_encoding.c | |
parent | d85e39cf4ab0e4c7c1ccd2a05741c4e2dc14d34b (diff) | |
parent | 9df1dcd32909fa347dbec59cb5754b1bb5bee44a (diff) | |
download | php-git-c7face7702dc2078956e3ea2749045ef34c17939.tar.gz |
Merge branch 'phpng' of git.php.net:php-src into phpng
Diffstat (limited to 'ext/soap/php_encoding.c')
-rw-r--r-- | ext/soap/php_encoding.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index 8ea419dc1b..1227ebba98 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -1252,13 +1252,14 @@ static void unset_zval_property(zval* object, char* name TSRMLS_DC) static void model_to_zval_any(zval *ret, xmlNodePtr node TSRMLS_DC) { - zval rv, arr; + zval rv, arr, val; zval* any = NULL; char* name = NULL; while (node != NULL) { if (get_zval_property(ret, (char*)node->name, &rv TSRMLS_CC) == NULL) { - zval* val = master_to_zval(ret, get_conversion(XSD_ANYXML), node TSRMLS_CC); + + master_to_zval(&val, get_conversion(XSD_ANYXML), node TSRMLS_CC); if (any && Z_TYPE_P(any) != IS_ARRAY) { /* Convert into array */ @@ -1271,16 +1272,16 @@ static void model_to_zval_any(zval *ret, xmlNodePtr node TSRMLS_DC) any = &arr; } - if (Z_TYPE_P(val) == IS_STRING && *Z_STRVAL_P(val) == '<') { + if (Z_TYPE(val) == IS_STRING && *Z_STRVAL(val) == '<') { name = NULL; while (node->next != NULL) { zval val2; master_to_zval(&val2, get_conversion(XSD_ANYXML), node->next TSRMLS_CC); - if (Z_TYPE(val2) != IS_STRING || *Z_STRVAL_P(val) != '<') { + if (Z_TYPE(val2) != IS_STRING || *Z_STRVAL(val) != '<') { break; } - add_string_to_string(val, val, &val2); + add_string_to_string(&val, &val, &val2); zval_ptr_dtor(&val2); node = node->next; } @@ -1292,11 +1293,11 @@ static void model_to_zval_any(zval *ret, xmlNodePtr node TSRMLS_DC) if (name) { /* Convert into array */ array_init(&arr); - add_assoc_zval(&arr, name, val); + add_assoc_zval(&arr, name, &val); any = &arr; name = NULL; } else { - any = val; + any = &val; } } else { /* Add array element */ @@ -1309,12 +1310,12 @@ static void model_to_zval_any(zval *ret, xmlNodePtr node TSRMLS_DC) add_next_index_zval(&arr, el); el = &arr; } - add_next_index_zval(el, val); + add_next_index_zval(el, &val); } else { - add_assoc_zval(any, name, val); + add_assoc_zval(any, name, &val); } } else { - add_next_index_zval(any, val); + add_next_index_zval(any, &val); } name = NULL; } @@ -2301,7 +2302,7 @@ static xmlNodePtr to_xml_array(encodeTypePtr type, zval *data, int style, xmlNod } } iterator_done: - iter->funcs->dtor(iter TSRMLS_CC); + OBJ_RELEASE(&iter->std); if (EG(exception)) { zval_ptr_dtor(&array_copy); ZVAL_UNDEF(&array_copy); |