summaryrefslogtreecommitdiff
path: root/Zend/zend_gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_gc.c')
-rw-r--r--Zend/zend_gc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c
index e223a49906..74c534844d 100644
--- a/Zend/zend_gc.c
+++ b/Zend/zend_gc.c
@@ -242,6 +242,13 @@ ZEND_API void ZEND_FASTCALL gc_possible_root(zend_refcounted *ref)
GC_REFCOUNT(ref)++;
gc_collect_cycles();
GC_REFCOUNT(ref)--;
+ if (UNEXPECTED(GC_REFCOUNT(ref)) == 0) {
+ zval_dtor_func_for_ptr(ref);
+ return;
+ }
+ if (UNEXPECTED(GC_INFO(ref))) {
+ return;
+ }
newRoot = GC_G(unused);
if (!newRoot) {
#if ZEND_GC_DEBUG