com php-src: Merge branch 'PHP-5.6' into PHP-7.0: ext/wddx/wddx.c
| From: | Anatol Belski | Date: | Tue, 08 Nov 2016 11:16:39 +0000 |
| Subject: | com php-src: Merge branch 'PHP-5.6' into PHP-7.0: ext/wddx/wddx.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-95444@lists.php.net to get a copy of this message | ||
Commit: e87daf363b5eb2965a2cb4dec5427a9b83ce88e2
Author: Anatol Belski <ab@php.net> Tue, 8 Nov 2016 12:16:39 +0100
Parents: 2b30b542750a917932fed29cafac83d40a045ffe d6d08f97cddd3bb12e9346c0aa59977c876dae0e
Branches: PHP-7.0 PHP-7.1 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=e87daf363b5eb2965a2cb4dec5427a9b83ce88e2
Log:
Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
fix memory leak
Changed paths:
MM ext/wddx/wddx.c
Diff:
diff --cc ext/wddx/wddx.c
index e21d178,069ea12..b188e89
--- a/ext/wddx/wddx..c
+++ b/ext/wddx/wddx.c
@@@ -940,31 -1000,34 +940,32 @@@ static void php_wddx_pop_element(void *
if (ent1->varname) {
if (!strcmp(ent1->varname, PHP_CLASS_NAME_VAR) &&
- Z_TYPE_P(ent1->data) == IS_STRING && Z_STRLEN_P(ent1->data) &&
- ent2->type == ST_STRUCT && Z_TYPE_P(ent2->data) == IS_ARRAY) {
+ Z_TYPE(ent1->data) == IS_STRING && Z_STRLEN(ent1->data) &&
+ ent2->type == ST_STRUCT && Z_TYPE(ent2->data) == IS_ARRAY) {
zend_bool incomplete_class = 0;
- zend_str_tolower(Z_STRVAL_P(ent1->data), Z_STRLEN_P(ent1->data));
- if (zend_hash_find(EG(class_table), Z_STRVAL_P(ent1->data),
- Z_STRLEN_P(ent1->data)+1, (void **) &pce)==FAILURE) {
+ zend_str_tolower(Z_STRVAL(ent1->data), Z_STRLEN(ent1->data));
+ zend_string_forget_hash_val(Z_STR(ent1->data));
+ if ((pce = zend_hash_find_ptr(EG(class_table), Z_STR(ent1->data))) == NULL) {
incomplete_class = 1;
- pce = &PHP_IC_ENTRY;
+ pce = PHP_IC_ENTRY;
}
- if (pce != &PHP_IC_ENTRY && ((*pce)->serialize || (*pce)->unserialize)) {
+ if (pce != PHP_IC_ENTRY && (pce->serialize || pce->unserialize)) {
+ zval_ptr_dtor(&ent2->data);
- ent2->data = NULL;
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Class %s can not be unserialized",
Z_STRVAL_P(ent1->data));
+ ZVAL_UNDEF(&ent2->data);
+ php_error_docref(NULL, E_WARNING, "Class %s can not be unserialized",
Z_STRVAL(ent1->data));
} else {
/* Initialize target object */
- MAKE_STD_ZVAL(obj);
- object_init_ex(obj, *pce);
+ object_init_ex(&obj, pce);
/* Merge current hashtable with object's default properties */
- zend_hash_merge(Z_OBJPROP_P(obj),
- Z_ARRVAL_P(ent2->data),
- (void (*)(void *)) zval_add_ref,
- (void *) &tmp, sizeof(zval *), 0);
+ zend_hash_merge(Z_OBJPROP(obj),
+ Z_ARRVAL(ent2->data),
+ zval_add_ref, 0);
if (incomplete_class) {
- php_store_class_name(obj, Z_STRVAL_P(ent1->data), Z_STRLEN_P(ent1->data));
+ php_store_class_name(&obj, Z_STRVAL(ent1->data), Z_STRLEN(ent1->data));
}
/* Clean up old array entry */