diff --git a/Zend/tests/bug78589.phpt b/Zend/tests/bug78589.phpt new file mode 100644 index 00000000000..ac4761f794d --- /dev/null +++ b/Zend/tests/bug78589.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #78589: Memory leak with GC + __destruct() +--FILE-- +foo = [&$test->foo]; +$ary = [&$ary, $test]; +unset($ary, $test); +gc_collect_cycles(); + +?> +===DONE=== +--EXPECT-- +===DONE=== diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c index 0d80eb68ee4..496d855d315 100644 --- a/Zend/zend_gc.c +++ b/Zend/zend_gc.c @@ -1539,7 +1539,6 @@ ZEND_API int zend_gc_collect_cycles(void) /* Destroy zvals */ GC_TRACE("Destroying zvals"); - GC_G(gc_protected) = 1; current = GC_IDX2PTR(GC_FIRST_ROOT); last = GC_IDX2PTR(GC_G(first_unused)); while (current != last) { @@ -1590,7 +1589,6 @@ ZEND_API int zend_gc_collect_cycles(void) GC_TRACE("Collection finished"); GC_G(collected) += count; - GC_G(gc_protected) = 0; GC_G(gc_active) = 0; }