X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=php_http_property_proxy.c;h=5be7ebbc0ab2de91254cfadf9b8912ec4ca493af;hp=4ec80addee83b203884e988f7a392c45039a7027;hb=dada371ebca4e4015b00067254fad1d7c2f06d2f;hpb=bd80b17b026a00a254ee8693cd7bacf1ebdec4cf diff --git a/php_http_property_proxy.c b/php_http_property_proxy.c index 4ec80ad..5be7ebb 100644 --- a/php_http_property_proxy.c +++ b/php_http_property_proxy.c @@ -135,6 +135,7 @@ static zval *php_http_property_proxy_object_get(zval *object TSRMLS_DC) MAKE_STD_ZVAL(unset); ZVAL_NULL(unset); zend_symtable_update(Z_ARRVAL_P(obj->proxy->object), Z_STRVAL_P(obj->proxy->member), Z_STRLEN_P(obj->proxy->member)+1, (void *) &unset, sizeof(zval *), (void *) &data); + Z_ADDREF_PP(data); } return *data; @@ -151,10 +152,10 @@ static void php_http_property_proxy_object_set(zval **object, zval *value TSRMLS #if PHP_HTTP_PPDBG fprintf(stderr, "proxy_set: %s\n", Z_STRVAL_P(obj->proxy->member)); #endif + Z_ADDREF_P(value); if (Z_TYPE_P(target) == IS_OBJECT) { zend_update_property(Z_OBJCE_P(target), target, Z_STRVAL_P(obj->proxy->member), Z_STRLEN_P(obj->proxy->member), value TSRMLS_CC); } else { - Z_ADDREF_P(value); zend_symtable_update(Z_ARRVAL_P(target), Z_STRVAL_P(obj->proxy->member), Z_STRLEN_P(obj->proxy->member)+1, (void *) &value, sizeof(zval *), NULL); } /* propagate */ @@ -260,7 +261,7 @@ PHP_METHOD(HttpPropertyProxy, __construct) PHP_MINIT_FUNCTION(http_property_proxy) { - PHP_HTTP_REGISTER_CLASS(http\\Object, PropertyProxy, http_property_proxy, NULL, ZEND_ACC_FINAL); + PHP_HTTP_REGISTER_CLASS(http\\Object, PropertyProxy, http_property_proxy, NULL, ZEND_ACC_FINAL_CLASS); php_http_property_proxy_class_entry->create_object = php_http_property_proxy_object_new; memcpy(&php_http_property_proxy_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); php_http_property_proxy_object_handlers.set = php_http_property_proxy_object_set;