diff options
author | Dmitry Stogov <dmitry@php.net> | 2008-03-18 11:37:15 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2008-03-18 11:37:15 +0000 |
commit | d390956ccb080518fdf9747d498a9291accbd50a (patch) | |
tree | 1ce74b23c250ae2f14ec5a541e1a0e3e5aea7d5b | |
parent | ea9305c543823220d16ba17da0650eefcffb6e57 (diff) | |
download | php-git-d390956ccb080518fdf9747d498a9291accbd50a.tar.gz |
Removed hack (we don't need to modify class name).
(the problem is covered by Zend/tests/ns_056.phpt)
-rw-r--r-- | Zend/zend_compile.c | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 5b8a09286f..add7bee54f 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2504,26 +2504,17 @@ static zend_bool zend_do_perform_implementation_check(zend_function *fe, zend_fu zstr colon; - if (fe->common.type == ZEND_USER_FUNCTION && - ((UG(unicode) && - u_strchr(proto->common.arg_info[i].class_name.u, ':') == NULL && - (colon.u = u_memrchr(fe->common.arg_info[i].class_name.u, ':', fe->common.arg_info[i].class_name_len)) != NULL && - fe->common.arg_info[i].class_name_len - (colon.u + 1 - fe->common.arg_info[i].class_name.u) == proto->common.arg_info[i].class_name_len && - zend_u_binary_strcasecmp(colon.u + 1, proto->common.arg_info[i].class_name_len, proto->common.arg_info[i].class_name.u, proto->common.arg_info[i].class_name_len) == 0) || - (!UG(unicode) && - strchr(proto->common.arg_info[i].class_name.s, ':') == NULL && - (colon.s = zend_memrchr(fe->common.arg_info[i].class_name.s, ':', fe->common.arg_info[i].class_name_len)) != NULL && - fe->common.arg_info[i].class_name_len - (colon.s + 1 - fe->common.arg_info[i].class_name.s) == proto->common.arg_info[i].class_name_len && - zend_binary_strcasecmp(colon.s + 1, proto->common.arg_info[i].class_name_len, proto->common.arg_info[i].class_name.s, proto->common.arg_info[i].class_name_len) == 0))) { - - efree((char*)fe->common.arg_info[i].class_name.v); - if (UG(unicode)) { - fe->common.arg_info[i].class_name.u = eustrndup(proto->common.arg_info[i].class_name.u, proto->common.arg_info[i].class_name_len); - } else { - fe->common.arg_info[i].class_name.s = estrndup(proto->common.arg_info[i].class_name.s, 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 || + ((!UG(unicode) || + u_strchr(proto->common.arg_info[i].class_name.u, ':') != NULL || + (colon.u = u_memrchr(fe->common.arg_info[i].class_name.u, ':', fe->common.arg_info[i].class_name_len)) == NULL || + fe->common.arg_info[i].class_name_len - (colon.u + 1 - fe->common.arg_info[i].class_name.u) != proto->common.arg_info[i].class_name_len || + zend_u_binary_strcasecmp(colon.u + 1, proto->common.arg_info[i].class_name_len, proto->common.arg_info[i].class_name.u, proto->common.arg_info[i].class_name_len) != 0) && + (UG(unicode) || + strchr(proto->common.arg_info[i].class_name.s, ':') != NULL || + (colon.s = zend_memrchr(fe->common.arg_info[i].class_name.s, ':', fe->common.arg_info[i].class_name_len)) == NULL || + fe->common.arg_info[i].class_name_len - (colon.s + 1 - fe->common.arg_info[i].class_name.s) != proto->common.arg_info[i].class_name_len || + zend_binary_strcasecmp(colon.s + 1, proto->common.arg_info[i].class_name_len, proto->common.arg_info[i].class_name.s, proto->common.arg_info[i].class_name_len) != 0))) { return 0; } } |