From 1d6c98a136d9217e3fd8ae1349f9ecdf541d6ea7 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 5 Dec 2011 09:20:12 +0000 Subject: [PATCH] Fixed bug #60444 (Segmentation fault with include & class extending) --- Zend/tests/bug60444.phpt | 18 ++++++++++++++++++ Zend/zend_compile.c | 10 +++++----- 2 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 Zend/tests/bug60444.phpt diff --git a/Zend/tests/bug60444.phpt b/Zend/tests/bug60444.phpt new file mode 100644 index 0000000000..38f81bc413 --- /dev/null +++ b/Zend/tests/bug60444.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #60444 (Segmentation fault with include & class extending) +--FILE-- +parent) { return; @@ -2870,8 +2870,8 @@ static void do_inherit_parent_constructor(zend_class_entry *ce) /* {{{ */ if (zend_hash_find(&ce->parent->function_table, ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME), (void **)&function)==SUCCESS) { /* inherit parent's constructor */ - zend_hash_update(&ce->function_table, ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME), function, sizeof(zend_function), NULL); - function_add_ref(function); + zend_hash_update(&ce->function_table, ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME), function, sizeof(zend_function), (void**)&new_function); + function_add_ref(new_function); } else { /* Don't inherit the old style constructor if we already have the new style constructor */ char *lc_class_name; @@ -2884,8 +2884,8 @@ static void do_inherit_parent_constructor(zend_class_entry *ce) /* {{{ */ zend_hash_find(&ce->parent->function_table, lc_parent_class_name, ce->parent->name_length+1, (void **)&function)==SUCCESS) { if (function->common.fn_flags & ZEND_ACC_CTOR) { /* inherit parent's constructor */ - zend_hash_update(&ce->function_table, lc_parent_class_name, ce->parent->name_length+1, function, sizeof(zend_function), NULL); - function_add_ref(function); + zend_hash_update(&ce->function_table, lc_parent_class_name, ce->parent->name_length+1, function, sizeof(zend_function), (void**)new_function); + function_add_ref(new_function); } } efree(lc_parent_class_name); -- 2.50.1