com php-src: Fixed reference counting and memory leak: ext/soap/php_encoding.c
| From: | Dmitry Stogov | Date: | Thu, 15 May 2014 07:57:16 +0000 |
| Subject: | com php-src: Fixed reference counting and memory leak: ext/soap/php_encoding.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-78357@lists.php.net to get a copy of this message | ||
Commit: 926388620bd48509af203997b22090e086b937e2
Author: Dmitry Stogov <dmitry@zend.com> Thu, 15 May 2014 11:57:16 +0400
Parents: 4c4df8598835ce39986ea3dbe19629bb0ee61f28
Branches: phpng
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=926388620bd48509af203997b22090e086b937e2
Log:
Fixed reference counting and memory leak
Changed paths:
M ext/soap/php_encoding.c
Diff:
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index 071c0fd..4491c10 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -1191,8 +1191,8 @@ static void set_zval_property(zval* object, char* name, zval* val TSRMLS_DC)
old_scope = EG(scope);
EG(scope) = Z_OBJCE_P(object);
- Z_DELREF_P(val);
add_property_zval(object, name, val);
+ if (Z_REFCOUNTED_P(val)) Z_DELREF_P(val);
EG(scope) = old_scope;
}
@@ -1203,8 +1203,6 @@ static zval* get_zval_property(zval* object, char* name, zval *rv TSRMLS_DC)
zval *data;
zend_class_entry *old_scope;
-//??? INIT_PZVAL(&member);
-//??? ZVAL_STRING(&member, name, 0);
ZVAL_STRING(&member, name);
old_scope = EG(scope);
EG(scope) = Z_OBJCE_P(object);
@@ -1214,12 +1212,14 @@ static zval* get_zval_property(zval* object, char* name, zval *rv TSRMLS_DC)
zend_property_info *property_info;
property_info = zend_get_property_info(Z_OBJCE_P(object), &member, 1 TSRMLS_CC);
+ zval_ptr_dtor(&member);
EG(scope) = old_scope;
if (property_info && zend_hash_exists(Z_OBJPROP_P(object), property_info->name)) {
return data;
}
return NULL;
}
+ zval_ptr_dtor(&member);
EG(scope) = old_scope;
return data;
} else if (Z_TYPE_P(object) == IS_ARRAY) {