summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_compile.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 2d885da9eb..a3660a90fe 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -2278,14 +2278,10 @@ static zend_bool zend_do_perform_implementation_check(zend_function *fe, zend_fu
&& strcasecmp(fe->common.arg_info[i].class_name, proto->common.arg_info[i].class_name)!=0) {
char *colon;
- if (fe->common.type == ZEND_USER_FUNCTION &&
- strchr(proto->common.arg_info[i].class_name, ':') == NULL &&
- (colon = zend_memrchr(fe->common.arg_info[i].class_name, ':', fe->common.arg_info[i].class_name_len)) != NULL &&
- strcasecmp(colon+1, proto->common.arg_info[i].class_name) == 0) {
- efree((char*)fe->common.arg_info[i].class_name);
- fe->common.arg_info[i].class_name = estrndup(proto->common.arg_info[i].class_name, proto->common.arg_info[i].class_name_len);
- fe->common.arg_info[i].class_name_len = proto->common.arg_info[i].class_name_len;
- } else {
+ if (fe->common.type != ZEND_USER_FUNCTION ||
+ strchr(proto->common.arg_info[i].class_name, ':') != NULL ||
+ (colon = zend_memrchr(fe->common.arg_info[i].class_name, ':', fe->common.arg_info[i].class_name_len)) == NULL ||
+ strcasecmp(colon+1, proto->common.arg_info[i].class_name) != 0) {
return 0;
}
}