summaryrefslogtreecommitdiff
path: root/ext/soap/php_encoding.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2010-06-15 08:22:51 +0000
committerDmitry Stogov <dmitry@php.net>2010-06-15 08:22:51 +0000
commitd868733cc32f99059f229eedd0cad51471d5500f (patch)
treeffaab92bae0dc3b2a423cb6b8a948c8a78a095f6 /ext/soap/php_encoding.c
parent2f838ef5471a61e5e62077c8cbc6735ba3be9be1 (diff)
downloadphp-git-d868733cc32f99059f229eedd0cad51471d5500f.tar.gz
Fixed bug #52041 (Memory leak when writing on uninitialized variable returned from function)
Diffstat (limited to 'ext/soap/php_encoding.c')
-rw-r--r--ext/soap/php_encoding.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index 4295ffbd76..047734c2a5 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -1548,8 +1548,13 @@ static zval *to_zval_object_ex(encodeTypePtr type, xmlNodePtr data, zend_class_e
}
model_to_zval_object(ret, sdlType->model, data, sdl TSRMLS_CC);
if (redo_any) {
- if (get_zval_property(ret, "any" TSRMLS_CC) == NULL) {
+ zval *tmp = get_zval_property(ret, "any" TSRMLS_CC);
+
+ if (tmp == NULL) {
model_to_zval_any(ret, data->children TSRMLS_CC);
+ } else if (Z_REFCOUNT_P(tmp) == 0) {
+ zval_dtor(tmp);
+ efree(tmp);
}
zval_ptr_dtor(&redo_any);
}