summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2008-01-09 07:57:42 +0000
committerDmitry Stogov <dmitry@php.net>2008-01-09 07:57:42 +0000
commitb5c42440692dd69db9583244265314f1cf05effe (patch)
treef22f100514b14e588bc49bf506764e5cd4dbb947
parentd5b9a390641feb3d7804bae5e6c92048dfce18b1 (diff)
downloadphp-git-b5c42440692dd69db9583244265314f1cf05effe.tar.gz
Fixed bug #43703 (Signature compatibility check broken)
-rw-r--r--Zend/tests/bug43703.phpt23
-rw-r--r--Zend/zend_compile.c4
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;