no addref
[m6w6/ext-propro] / php_propro.c
index d0a69c6e422a0f84e43f01270ef55aaeeac91626..090b0dabe8e868e55a32acab7ddbd7003156a2f7 100644 (file)
@@ -43,7 +43,7 @@ php_property_proxy_t *php_property_proxy_init(zval *container, zend_string *memb
 void php_property_proxy_free(php_property_proxy_t **proxy)
 {
        if (*proxy) {
-               zval_ptr_dtor( &(*proxy)->container);
+               zval_ptr_dtor(&(*proxy)->container);
                zend_string_release((*proxy)->member);
                efree(*proxy);
                *proxy = NULL;
@@ -59,7 +59,6 @@ zval *php_property_proxy_zval(zval *container, zend_string *member)
        proxy_obj = php_property_proxy_object_new_ex(NULL, proxy);
 
        ZVAL_OBJ(&proxy_obj->myself, &proxy_obj->zo);
-       Z_ADDREF(proxy_obj->myself);
        return &proxy_obj->myself;
 }
 
@@ -247,7 +246,7 @@ static zval *get_parent_proxied_value(zval *object, zval *return_value)
 
 static zval *get_proxied_value(zval *object, zval *return_value)
 {
-       zval *hash_value, *ref;
+       zval *hash_value, *ref, prop_tmp;
        php_property_proxy_object_t *obj;
 
        obj = get_propro(object);
@@ -271,7 +270,7 @@ static zval *get_proxied_value(zval *object, zval *return_value)
                switch (Z_TYPE_P(ref)) {
                case IS_OBJECT:
                        RETVAL_ZVAL(zend_read_property(Z_OBJCE_P(ref), ref,
-                                       obj->proxy->member->val, obj->proxy->member->len, 0),
+                                       obj->proxy->member->val, obj->proxy->member->len, 0, &prop_tmp),
                                        0, 0);
                        break;