dmitry                                   Wed, 11 May 2011 06:58:33 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=310938

Log:
Fixed bug #54367 (Use of closure causes problem in ArrayAccess)

Bug: http://bugs.php.net/54367 (Re-Opened) Use of closure causes problem in 
ArrayAccess
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/Zend/zend_execute_API.c

Modified: php/php-src/branches/PHP_5_3/Zend/zend_execute_API.c
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/zend_execute_API.c        2011-05-11 
03:59:50 UTC (rev 310937)
+++ php/php-src/branches/PHP_5_3/Zend/zend_execute_API.c        2011-05-11 
06:58:33 UTC (rev 310938)
@@ -433,26 +433,28 @@

 ZEND_API void _zval_ptr_dtor(zval **zval_ptr ZEND_FILE_LINE_DC) /* {{{ */
 {
+       zval *zv = *zval_ptr;
+
 #if DEBUG_ZEND>=2
        printf("Reducing refcount for %x (%x): %d->%d\n", *zval_ptr, zval_ptr, 
Z_REFCOUNT_PP(zval_ptr), Z_REFCOUNT_PP(zval_ptr) - 1);
 #endif
-       Z_DELREF_PP(zval_ptr);
-       if (Z_REFCOUNT_PP(zval_ptr) == 0) {
+       Z_DELREF_P(zv);
+       if (Z_REFCOUNT_P(zv) == 0) {
                TSRMLS_FETCH();

-               if (*zval_ptr != &EG(uninitialized_zval)) {
-                       GC_REMOVE_ZVAL_FROM_BUFFER(*zval_ptr);
-                       zval_dtor(*zval_ptr);
-                       efree_rel(*zval_ptr);
+               if (zv != &EG(uninitialized_zval)) {
+                       GC_REMOVE_ZVAL_FROM_BUFFER(zv);
+                       zval_dtor(zv);
+                       efree_rel(zv);
                }
        } else {
                TSRMLS_FETCH();

-               if (Z_REFCOUNT_PP(zval_ptr) == 1) {
-                       Z_UNSET_ISREF_PP(zval_ptr);
+               if (Z_REFCOUNT_P(zv) == 1) {
+                       Z_UNSET_ISREF_P(zv);
                }

-               GC_ZVAL_CHECK_POSSIBLE_ROOT(*zval_ptr);
+               GC_ZVAL_CHECK_POSSIBLE_ROOT(zv);
        }
 }
 /* }}} */

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to