]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.4'
authorDmitry Stogov <dmitry@zend.com>
Tue, 6 Aug 2019 08:37:08 +0000 (11:37 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 6 Aug 2019 08:37:08 +0000 (11:37 +0300)
* 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

1  2 
Zend/zend_gc.c

diff --cc Zend/zend_gc.c
index 03ddeb25d433e473f8077b2d253a4148d211e536,be00bc73a6dd4225ceb25d2f498b7dafafec03e3..e3883b614431e69cfc48945817b0998bbcd2d3c8
@@@ -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;