From: Antony Dovgal Date: Mon, 12 Mar 2007 13:10:40 +0000 (+0000) Subject: MFH: fix #40784 (Case sensivity in constructor's fallback) X-Git-Tag: php-5.2.2RC1~168 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=30f45e15de0ed8be57bbbe8a20a1a1c481e52d2b;p=php MFH: fix #40784 (Case sensivity in constructor's fallback) --- diff --git a/Zend/tests/bug40784.phpt b/Zend/tests/bug40784.phpt new file mode 100644 index 0000000000..6da8f2a16b --- /dev/null +++ b/Zend/tests/bug40784.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #40784 (Case sensivity in constructor's fallback) +--FILE-- + +--EXPECTF-- +I'm A +I'm A +Done diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 8f21d5f250..ff2963d921 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1480,12 +1480,15 @@ void zend_do_begin_class_member_function_call(znode *class_name, znode *method_n opline->op2 = *method_name; if (opline->op2.op_type == IS_CONST) { + char *lcname = zend_str_tolower_dup(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant)); if ((sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)-1) == Z_STRLEN(opline->op2.u.constant) && - memcmp(Z_STRVAL(opline->op2.u.constant), ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)-1) == 0) { + memcmp(lcname, ZEND_CONSTRUCTOR_FUNC_NAME, sizeof(ZEND_CONSTRUCTOR_FUNC_NAME)-1) == 0) { zval_dtor(&opline->op2.u.constant); SET_UNUSED(opline->op2); + efree(lcname); } else { - zend_str_tolower(opline->op2.u.constant.value.str.val, opline->op2.u.constant.value.str.len); + efree(opline->op2.u.constant.value.str.val); + opline->op2.u.constant.value.str.val = lcname; } }