summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2012-08-23 16:06:17 +0800
committerXinchen Hui <laruence@php.net>2012-08-23 16:06:17 +0800
commitd39aa984ad3ef79a8fc3db0cf8dc525a0738a7bc (patch)
tree4ac2452fd36316ee7aa40567735dbe716aa5d95c
parent6d1bebfcb0ad746cd0410d403a3812853a2cd457 (diff)
downloadphp-git-d39aa984ad3ef79a8fc3db0cf8dc525a0738a7bc.tar.gz
Refix #62358, previous has side-affect
-rw-r--r--Zend/zend_compile.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 21e5ca2f6b..4ef4b97d6d 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -3786,6 +3786,7 @@ static int zend_traits_merge_functions_to_class(zend_function *fn TSRMLS_DC, int
}
fn->common.scope = ce;
+ fn->common.prototype = prototype;
if (prototype
&& (prototype->common.fn_flags & ZEND_ACC_IMPLEMENTED_ABSTRACT
@@ -3803,11 +3804,11 @@ static int zend_traits_merge_functions_to_class(zend_function *fn TSRMLS_DC, int
/* one more thing: make sure we properly implement an abstract method */
if (existing_fn && existing_fn->common.fn_flags & ZEND_ACC_ABSTRACT) {
+ prototype = fn->common.prototype;
do_inheritance_check_on_method(fn, existing_fn TSRMLS_CC);
+ fn->common.prototype = prototype;
}
- fn->common.prototype = prototype;
-
/* delete inherited fn if the function to be added is not abstract */
if (existing_fn
&& existing_fn->common.scope != ce