From 90435637756fb8c473938853bc6d3ecfa9f2eeff Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 15 Apr 2020 10:49:44 +0200 Subject: [PATCH] Make zend_list_free return void And assert that the refcount is zero. This function should only be used internally as the resource destructor. --- Zend/zend_list.c | 11 ++++------- Zend/zend_list.h | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Zend/zend_list.c b/Zend/zend_list.c index 2288cf6913..3464ca27d5 100644 --- a/Zend/zend_list.c +++ b/Zend/zend_list.c @@ -51,13 +51,10 @@ ZEND_API int ZEND_FASTCALL zend_list_delete(zend_resource *res) } } -ZEND_API int ZEND_FASTCALL zend_list_free(zend_resource *res) +ZEND_API void ZEND_FASTCALL zend_list_free(zend_resource *res) { - if (GC_REFCOUNT(res) <= 0) { - return zend_hash_index_del(&EG(regular_list), res->handle); - } else { - return SUCCESS; - } + ZEND_ASSERT(GC_REFCOUNT(res) == 0); + zend_hash_index_del(&EG(regular_list), res->handle); } static void zend_resource_dtor(zend_resource *res) @@ -82,7 +79,7 @@ static void zend_resource_dtor(zend_resource *res) ZEND_API int ZEND_FASTCALL zend_list_close(zend_resource *res) { if (GC_REFCOUNT(res) <= 0) { - return zend_list_free(res); + zend_list_free(res); } else if (res->type >= 0) { zend_resource_dtor(res); } diff --git a/Zend/zend_list.h b/Zend/zend_list.h index b9a1d5e159..92fdd3d417 100644 --- a/Zend/zend_list.h +++ b/Zend/zend_list.h @@ -53,7 +53,7 @@ int zend_init_rsrc_list_dtors(void); void zend_destroy_rsrc_list_dtors(void); ZEND_API zval* ZEND_FASTCALL zend_list_insert(void *ptr, int type); -ZEND_API int ZEND_FASTCALL zend_list_free(zend_resource *res); +ZEND_API void ZEND_FASTCALL zend_list_free(zend_resource *res); ZEND_API int ZEND_FASTCALL zend_list_delete(zend_resource *res); ZEND_API int ZEND_FASTCALL zend_list_close(zend_resource *res); -- 2.50.1