]> granicus.if.org Git - php/commitdiff
Disabled $GLOBALS' refcount modification
authorDmitry Stogov <dmitry@php.net>
Wed, 19 Mar 2008 11:46:10 +0000 (11:46 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 19 Mar 2008 11:46:10 +0000 (11:46 +0000)
Zend/zend_gc.c

index 659ec55ec6f34214c5435229c47e5d8a61bdf2b5..0acff1c0527b4db34b63e057698217cd13b377c0 100644 (file)
@@ -305,7 +305,9 @@ static void zval_scan_black(zval *pz TSRMLS_DC)
 
 static int children_scan_black(zval **pz TSRMLS_DC)
 {
-       (*pz)->refcount__gc++;
+       if (Z_TYPE_PP(pz) != IS_ARRAY || Z_ARRVAL_PP(pz) != &EG(symbol_table)) {
+               (*pz)->refcount__gc++;
+       }
 
        if (GC_ZVAL_GET_COLOR(*pz) != GC_BLACK) {
                zval_scan_black(*pz TSRMLS_CC);
@@ -349,7 +351,9 @@ static void zval_mark_grey(zval *pz TSRMLS_DC)
 
 static int children_mark_grey(zval **pz TSRMLS_DC)
 {
-       (*pz)->refcount__gc--;
+       if (Z_TYPE_PP(pz) != IS_ARRAY || Z_ARRVAL_PP(pz) != &EG(symbol_table)) {
+               (*pz)->refcount__gc--;
+       }
        zval_mark_grey(*pz TSRMLS_CC);
        return 0;
 }