]> granicus.if.org Git - php/commitdiff
Fixed Segfault
authorXinchen Hui <laruence@gmail.com>
Mon, 17 Feb 2014 14:47:52 +0000 (22:47 +0800)
committerXinchen Hui <laruence@gmail.com>
Mon, 17 Feb 2014 14:47:52 +0000 (22:47 +0800)
Zend/zend_list.c
Zend/zend_list.h

index 3dbe72c030fba0e9cf9368fe552642446aa5abbb..8bc5161bda2e77363d5dc78f28174b8bb3002c37 100644 (file)
@@ -137,7 +137,7 @@ void list_entry_destructor(zval *zv)
                                break;
                        case ZEND_RESOURCE_LIST_TYPE_EX:
                                if (ld->list_dtor_ex) {
-                                       ld->list_dtor_ex(res->ptr TSRMLS_CC);
+                                       ld->list_dtor_ex(res TSRMLS_CC);
                                }
                                break;
                        EMPTY_SWITCH_DEFAULT_CASE()
@@ -225,14 +225,14 @@ void zend_clean_module_rsrc_dtors(int module_number TSRMLS_DC)
 }
 
 
-ZEND_API int zend_register_list_destructors(void (*ld)(void *), void (*pld)(void *), int module_number)
+ZEND_API int zend_register_list_destructors(rsrc_dtor_func_t ld, rsrc_dtor_func_t pld, int module_number)
 {
        zend_rsrc_list_dtors_entry *lde;
        zval zv;
        
        lde = malloc(sizeof(zend_rsrc_list_dtors_entry));
-       lde->list_dtor=(void (*)(void *)) ld;
-       lde->plist_dtor=(void (*)(void *)) pld;
+       lde->list_dtor = ld;
+       lde->plist_dtor = pld;
        lde->list_dtor_ex = lde->plist_dtor_ex = NULL;
        lde->module_number = module_number;
        lde->resource_id = list_destructors.nNextFreeElement;
index 8811a978fdc7a52f76b2c473dd3a5042525b86c3..52b171e4222b89a7c78d1cbfb9397294bd0b5c6f 100644 (file)
@@ -35,8 +35,8 @@ typedef void (*rsrc_dtor_func_t)(zend_resource *res TSRMLS_DC);
 
 typedef struct _zend_rsrc_list_dtors_entry {
        /* old style destructors */
-       void (*list_dtor)(void *);
-       void (*plist_dtor)(void *);
+       void (*list_dtor)(zend_resource *);
+       void (*plist_dtor)(zend_resource *);
 
        /* new style destructors */
        rsrc_dtor_func_t list_dtor_ex;
@@ -50,8 +50,8 @@ 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);
-ZEND_API int zend_register_list_destructors(void (*ld)(void *), void (*pld)(void *), int module_number);
+#define register_list_destructors(ld, pld) zend_register_list_destructors(ld, pld, module_number);
+ZEND_API int zend_register_list_destructors(rsrc_dtor_func_t ld, rsrc_dtor_func_t pld, int module_number);
 ZEND_API int zend_register_list_destructors_ex(rsrc_dtor_func_t ld, rsrc_dtor_func_t pld, const char *type_name, int module_number);
 
 void list_entry_destructor(zval *ptr);