* 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
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;