From 170a3f871ff762b7a52f502acdd73386a359e8bc Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 6 Aug 2019 11:35:53 +0300 Subject: [PATCH] Don't set GC_HAS_DESTRUCTORS flag if destructors were already called --- Zend/zend_gc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c index 5b5784fc42..be00bc73a6 100644 --- a/Zend/zend_gc.c +++ b/Zend/zend_gc.c @@ -1158,8 +1158,9 @@ static int gc_collect_white(zend_refcounted *ref, uint32_t *flags, gc_stack *sta if (!GC_INFO(ref)) { gc_add_garbage(ref); } - if (obj->handlers->dtor_obj != zend_objects_destroy_object || - obj->ce->destructor != NULL) { + if (!(OBJ_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED) + && (obj->handlers->dtor_obj != zend_objects_destroy_object + || obj->ce->destructor != NULL)) { *flags |= GC_HAS_DESTRUCTORS; } ZVAL_OBJ(&tmp, obj); -- 2.40.0