From 30f45e15de0ed8be57bbbe8a20a1a1c481e52d2b Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Mon, 12 Mar 2007 13:10:40 +0000 Subject: [PATCH] MFH: fix #40784 (Case sensivity in constructor's fallback) --- Zend/tests/bug40784.phpt | 24 ++++++++++++++++++++++++ Zend/zend_compile.c | 7 +++++-- 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 Zend/tests/bug40784.phpt 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; } } -- 2.50.1