summaryrefslogtreecommitdiff
path: root/ext/soap/php_encoding.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/soap/php_encoding.c')
-rw-r--r--ext/soap/php_encoding.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index 071c0fd3e1..9afaa51b9c 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,12 +1203,10 @@ 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);
- data = Z_OBJ_HT_P(object)->read_property(object, &member, BP_VAR_IS, 0, &rv TSRMLS_CC);
+ data = Z_OBJ_HT_P(object)->read_property(object, &member, BP_VAR_IS, -1, &rv TSRMLS_CC);
if (data == &EG(uninitialized_zval)) {
/* Hack for bug #32455 */
zend_property_info *property_info;
@@ -1216,10 +1214,13 @@ static zval* get_zval_property(zval* object, char* name, zval *rv TSRMLS_DC)
property_info = zend_get_property_info(Z_OBJCE_P(object), &member, 1 TSRMLS_CC);
EG(scope) = old_scope;
if (property_info && zend_hash_exists(Z_OBJPROP_P(object), property_info->name)) {
+ zval_ptr_dtor(&member);
return data;
}
+ zval_ptr_dtor(&member);
return NULL;
}
+ zval_ptr_dtor(&member);
EG(scope) = old_scope;
return data;
} else if (Z_TYPE_P(object) == IS_ARRAY) {