diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-08-28 15:35:53 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-08-28 17:04:36 +0200 |
commit | c45f19590c4d442c0ecf5a3b55cd0fb928243e6a (patch) | |
tree | 1971efb6d56abccc8b85be48514c777abd4cd1b4 | |
parent | 2709d6a2508abfdda1b84f0426ae644c703180ed (diff) | |
download | php-git-c45f19590c4d442c0ecf5a3b55cd0fb928243e6a.tar.gz |
Remove delref in free_object_storage
This gives us better object leak diagnostics.
-rw-r--r-- | Zend/zend_objects_API.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/Zend/zend_objects_API.c b/Zend/zend_objects_API.c index 7c5d44a502..80359b5e1e 100644 --- a/Zend/zend_objects_API.c +++ b/Zend/zend_objects_API.c @@ -87,7 +87,8 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_free_object_storage(zend_objects_ return; } - /* Free object contents, but don't free objects themselves, so they show up as leaks */ + /* Free object contents, but don't free objects themselves, so they show up as leaks. + * Also add a ref to all objects, so the object can't be freed by something else later. */ end = objects->object_buckets + 1; obj_ptr = objects->object_buckets + objects->top; @@ -101,7 +102,6 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_free_object_storage(zend_objects_ if (obj->handlers->free_obj != zend_object_std_dtor) { GC_ADDREF(obj); obj->handlers->free_obj(obj); - GC_DELREF(obj); } } } @@ -115,7 +115,6 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_free_object_storage(zend_objects_ GC_ADD_FLAGS(obj, IS_OBJ_FREE_CALLED); GC_ADDREF(obj); obj->handlers->free_obj(obj); - GC_DELREF(obj); } } } while (obj_ptr != end); |