diff options
Diffstat (limited to 'ext/soap/php_packet_soap.c')
-rw-r--r-- | ext/soap/php_packet_soap.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/ext/soap/php_packet_soap.c b/ext/soap/php_packet_soap.c index f29193dbd1..2fb8816a8c 100644 --- a/ext/soap/php_packet_soap.c +++ b/ext/soap/php_packet_soap.c @@ -332,11 +332,14 @@ int parse_packet_soap(zval *this_ptr, char *buffer, int buffer_size, sdlFunction zval_dtor(return_value); ZVAL_NULL(return_value); } else if (param_count == 1) { - zval *tmp = *(zval**)Z_ARRVAL_P(return_value)->pListHead->pData; - tmp->refcount++; + zval **tmp; + + zend_hash_internal_pointer_reset(Z_ARRVAL_P(return_value)); + zend_hash_get_current_data(Z_ARRVAL_P(return_value), (void**)&tmp); + (*tmp)->refcount++; zval_dtor(return_value); - *return_value = *tmp; - FREE_ZVAL(tmp); + *return_value = **tmp; + FREE_ZVAL(*tmp); } } |