use the params parser for query strings
[m6w6/ext-http] / php_http_property_proxy.c
index 4ec80addee83b203884e988f7a392c45039a7027..5be7ebbc0ab2de91254cfadf9b8912ec4ca493af 100644 (file)
@@ -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;