]> granicus.if.org Git - php/commitdiff
Fixed refcounting
authorDmitry Stogov <dmitry@zend.com>
Fri, 21 Mar 2014 07:33:20 +0000 (11:33 +0400)
committerDmitry Stogov <dmitry@zend.com>
Fri, 21 Mar 2014 07:33:20 +0000 (11:33 +0400)
Zend/zend_execute.c

index 25ac33920d882d2f4890267534f549ef4ec02dbe..ecbe67ab99bd16815cb11368b72a9bffc5a8cdf6 100644 (file)
@@ -1266,24 +1266,14 @@ convert_to_array:
                                        if (!Z_ISREF_P(overloaded_result)) {
                                                if (Z_REFCOUNTED_P(overloaded_result) &&
                                                    Z_REFCOUNT_P(overloaded_result) > 1) {
-//???
-#if 1
-//                                                     if (Z_TYPE_P(overloaded_result) != IS_OBJECT) {
+                                                       if (Z_TYPE_P(overloaded_result) != IS_OBJECT) {
                                                                Z_DELREF_P(overloaded_result);
                                                                ZVAL_DUP(result, overloaded_result);
                                                                overloaded_result = result;
-//                                                     } else {
-                                                               ZVAL_COPY_VALUE(result, overloaded_result);
+                                                       } else {
+                                                               ZVAL_COPY(result, overloaded_result);
                                                                overloaded_result = result;
-//                                                     }
-#else
-//???                                                  zval *tmp = overloaded_result;
-//???
-//???                                                  ALLOC_ZVAL(overloaded_result);
-//???                                                  ZVAL_DUP(overloaded_result, tmp);
-//???                                                  Z_UNSET_ISREF_P(overloaded_result);
-//???                                                  Z_SET_REFCOUNT_P(overloaded_result, 0);
-#endif
+                                                       }
                                                }
                                                if (Z_TYPE_P(overloaded_result) != IS_OBJECT) {
                                                        zend_class_entry *ce = Z_OBJCE_P(container);