Fixed Segfault

This commit is contained in:
Xinchen Hui 2014-02-17 22:47:52 +08:00
parent 2b9b9afa7a
commit 6d77ca06b9
2 changed files with 8 additions and 8 deletions

View file

@ -137,7 +137,7 @@ void list_entry_destructor(zval *zv)
break; break;
case ZEND_RESOURCE_LIST_TYPE_EX: case ZEND_RESOURCE_LIST_TYPE_EX:
if (ld->list_dtor_ex) { if (ld->list_dtor_ex) {
ld->list_dtor_ex(res->ptr TSRMLS_CC); ld->list_dtor_ex(res TSRMLS_CC);
} }
break; break;
EMPTY_SWITCH_DEFAULT_CASE() 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; zend_rsrc_list_dtors_entry *lde;
zval zv; zval zv;
lde = malloc(sizeof(zend_rsrc_list_dtors_entry)); lde = malloc(sizeof(zend_rsrc_list_dtors_entry));
lde->list_dtor=(void (*)(void *)) ld; lde->list_dtor = ld;
lde->plist_dtor=(void (*)(void *)) pld; lde->plist_dtor = pld;
lde->list_dtor_ex = lde->plist_dtor_ex = NULL; lde->list_dtor_ex = lde->plist_dtor_ex = NULL;
lde->module_number = module_number; lde->module_number = module_number;
lde->resource_id = list_destructors.nNextFreeElement; lde->resource_id = list_destructors.nNextFreeElement;

View file

@ -35,8 +35,8 @@ typedef void (*rsrc_dtor_func_t)(zend_resource *res TSRMLS_DC);
typedef struct _zend_rsrc_list_dtors_entry { typedef struct _zend_rsrc_list_dtors_entry {
/* old style destructors */ /* old style destructors */
void (*list_dtor)(void *); void (*list_dtor)(zend_resource *);
void (*plist_dtor)(void *); void (*plist_dtor)(zend_resource *);
/* new style destructors */ /* new style destructors */
rsrc_dtor_func_t list_dtor_ex; rsrc_dtor_func_t list_dtor_ex;
@ -50,8 +50,8 @@ typedef struct _zend_rsrc_list_dtors_entry {
} 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) zend_register_list_destructors(ld, pld, 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(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); 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); void list_entry_destructor(zval *ptr);