From: Dmitry Stogov Date: Tue, 6 Aug 2019 08:37:08 +0000 (+0300) Subject: Merge branch 'PHP-7.4' X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4d9e5ddf7c9faefde2bb1fe75f2e19d13771c5a7;p=php Merge branch 'PHP-7.4' * PHP-7.4: Don't set GC_HAS_DESTRUCTORS flag if destructors were already called Update NEWS for 7.4.0beta3 Update NEWS for PHP 7.4.0beta2 --- 4d9e5ddf7c9faefde2bb1fe75f2e19d13771c5a7 diff --cc Zend/zend_gc.c index 03ddeb25d4,be00bc73a6..e3883b6144 --- a/Zend/zend_gc.c +++ b/Zend/zend_gc.c @@@ -1151,11 -1158,13 +1151,12 @@@ static int gc_collect_white(zend_refcou 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); - ht = obj->handlers->get_gc(&tmp, &zv, &n); + ht = obj->handlers->get_gc(obj, &zv, &n); end = zv + n; if (EXPECTED(!ht)) { if (!n) goto next;