summaryrefslogtreecommitdiff
path: root/Zend/zend_objects_API.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-08-28 17:04:55 +0200
committerNikita Popov <nikita.ppv@gmail.com>2019-08-28 17:04:55 +0200
commit6323c13e74eb63cf03e11a36c68f4fdf2077872a (patch)
tree14ac20ccd7138d2d7e3bb6b0b4ef632d710f600e /Zend/zend_objects_API.c
parentafb69b6f2d4872d6b916c10d7d394ca304481865 (diff)
parentc45f19590c4d442c0ecf5a3b55cd0fb928243e6a (diff)
downloadphp-git-6323c13e74eb63cf03e11a36c68f4fdf2077872a.tar.gz
Merge branch 'PHP-7.4'
Diffstat (limited to 'Zend/zend_objects_API.c')
-rw-r--r--Zend/zend_objects_API.c5
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);