diff options
author | Dmitry Stogov <dmitry@php.net> | 2008-01-09 07:57:42 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2008-01-09 07:57:42 +0000 |
commit | b5c42440692dd69db9583244265314f1cf05effe (patch) | |
tree | f22f100514b14e588bc49bf506764e5cd4dbb947 | |
parent | d5b9a390641feb3d7804bae5e6c92048dfce18b1 (diff) | |
download | php-git-b5c42440692dd69db9583244265314f1cf05effe.tar.gz |
Fixed bug #43703 (Signature compatibility check broken)
-rw-r--r-- | Zend/tests/bug43703.phpt | 23 | ||||
-rw-r--r-- | Zend/zend_compile.c | 4 |
2 files changed, 25 insertions, 2 deletions
diff --git a/Zend/tests/bug43703.phpt b/Zend/tests/bug43703.phpt new file mode 100644 index 0000000000..de4f8a89fd --- /dev/null +++ b/Zend/tests/bug43703.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #43703 (Signature compatibility check broken) +--FILE-- +<?php +class JoinPoint +{ +} + +abstract class Pointcut +{ + abstract public function evaluate(JoinPoint $joinPoint); +} + +class Read extends Pointcut +{ + public function evaluate(Joinpoint $joinPoint) + { + } +} +?> +DONE +--EXPECT-- +DONE diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 4894e2639f..c5d061ede3 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -2293,13 +2293,13 @@ static zend_bool zend_do_perform_implementation_check(zend_function *fe, zend_fu return 0; } if (fe->common.arg_info[i].class_name - && strcmp(fe->common.arg_info[i].class_name, proto->common.arg_info[i].class_name)!=0) { + && 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 && - strcmp(colon+1, proto->common.arg_info[i].class_name) == 0) { + 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; |