com php-src: Fixed Segfault: Zend/zend_list.c Zend/zend _list.h
| From: | Dmitry Stogov | Date: | Mon, 17 Feb 2014 14:47:52 +0000 |
| Subject: | com php-src: Fixed Segfault: Zend/zend_list.c Zend/zend _list.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-78063@lists.php.net to get a copy of this message | ||
Commit: 6d77ca06b95b9a37d7d8dbf8a9f99d9407920a11
Author: Xinchen Hui <laruence@gmail.com> Mon, 17 Feb 2014 22:47:52 +0800
Parents: 2b9b9afa7a9a66f9c80013ce4121183bdff434e8
Branches: phpng
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=6d77ca06b95b9a37d7d8dbf8a9f99d9407920a11
Log:
Fixed Segfault
Changed paths:
M Zend/zend_list.c
M Zend/zend_list.h
Diff:
diff --git a/Zend/zend_list.c b/Zend/zend_list.c
index 3dbe72c..8bc5161 100644
--- a/Zend/zend_list.c
+++ b/Zend/zend_list.c
@@ -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;
diff --git a/Zend/zend_list.h b/Zend/zend_list.h
index 8811a97..52b171e 100644
--- a/Zend/zend_list.h
+++ b/Zend/zend_list.h
@@ -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);