summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_list.c6
-rw-r--r--Zend/zend_list.h2
2 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_list.c b/Zend/zend_list.c
index 9b16e8c0a1..7fb20c85cb 100644
--- a/Zend/zend_list.c
+++ b/Zend/zend_list.c
@@ -397,8 +397,12 @@ void zend_destroy_rsrc_list_dtors()
char *zend_rsrc_list_get_rsrc_type(int resource)
{
zend_rsrc_list_dtors_entry *lde;
+ int rsrc_type;
- if (zend_hash_index_find(&list_destructors, resource, (void **) &lde)==SUCCESS) {
+ if (!zend_list_find(resource, &rsrc_type))
+ return NULL;
+
+ if (zend_hash_index_find(&list_destructors, rsrc_type, (void **) &lde)==SUCCESS) {
return lde->type_name;
} else {
return NULL;
diff --git a/Zend/zend_list.h b/Zend/zend_list.h
index 6e92b014f5..8b9be4c0d6 100644
--- a/Zend/zend_list.h
+++ b/Zend/zend_list.h
@@ -55,7 +55,7 @@ typedef struct _zend_rsrc_list_dtors_entry {
} zend_rsrc_list_dtors_entry;
-#define register_list_destructors(ld, pld) zend_register_list_destructors((void (*)(void *))ld, (void (*)(void *))pld, module_number);
+#define register_list_destructors(ld, pld, name) zend_register_list_destructors_ex(ld, pld, name, module_number);
ZEND_API int zend_register_list_destructors(void (*ld)(void *), void (*pld)(void *), int module_number);
ZEND_API int zend_register_list_destructors_ex(rsrc_dtor_func_t ld, rsrc_dtor_func_t pld, char *type_name, int module_number);