fix leak
authorMichael Wallner <mike@php.net>
Mon, 17 Nov 2014 11:17:33 +0000 (12:17 +0100)
committerMichael Wallner <mike@php.net>
Mon, 17 Nov 2014 11:17:33 +0000 (12:17 +0100)
php_propro.c

index e78a6f87bb585201b36ac32d7e1e3e4087a718e4..8d96e948118e19bfd7a222bdd7c37816130f6352 100644 (file)
@@ -20,7 +20,7 @@
 
 #include "php_propro.h"
 
 
 #include "php_propro.h"
 
-#define DEBUG_PROPRO 1
+#define DEBUG_PROPRO 0
 
 static inline zval *get_referenced_zval(zval *ref)
 {
 
 static inline zval *get_referenced_zval(zval *ref)
 {
@@ -456,8 +456,11 @@ static void write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC)
        get_proxied_value(object, &proxied_value TSRMLS_CC);
 
        if (!Z_ISUNDEF(proxied_value)) {
        get_proxied_value(object, &proxied_value TSRMLS_CC);
 
        if (!Z_ISUNDEF(proxied_value)) {
-               convert_to_array(&proxied_value);
-               Z_ADDREF(proxied_value);
+               if (Z_TYPE(proxied_value) == IS_ARRAY) {
+                       Z_ADDREF(proxied_value);
+               } else {
+                       convert_to_array(&proxied_value);
+               }
        } else {
                array_init(&proxied_value);
        }
        } else {
                array_init(&proxied_value);
        }