diff options
Diffstat (limited to 'ext/soap/php_encoding.c')
-rw-r--r-- | ext/soap/php_encoding.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index b0842a1fae..4f36b67152 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -993,9 +993,12 @@ static void model_to_zval_object(zval *ret, sdlContentModelPtr model, xmlNodePtr while (node != NULL) { if (get_zval_property(ret, (char*)node->name TSRMLS_CC) == NULL) { zval* val = master_to_zval(get_conversion(XSD_ANYXML), node); - while (node->next != NULL && + while (Z_TYPE_P(val) == IS_STRING && node->next != NULL && get_zval_property(ret, (char*)node->next->name TSRMLS_CC) == NULL) { zval* val2 = master_to_zval(get_conversion(XSD_ANYXML), node->next); + if (Z_TYPE_P(val2) != IS_STRING) { + break; + } add_string_to_string(val, val, val2); zval_ptr_dtor(&val2); node = node->next; |