From 44caafc62eafad94cae89455a639765e5f819bc2 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 28 Jul 2008 14:12:19 +0000 Subject: [PATCH] Fixed constant substitution (Matt) --- Zend/tests/constants_005.phpt | 11 +++++++++++ Zend/zend_compile.c | 8 +++----- Zend/zend_constants.c | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) create mode 100755 Zend/tests/constants_005.phpt diff --git a/Zend/tests/constants_005.phpt b/Zend/tests/constants_005.phpt new file mode 100755 index 0000000000..097be97e14 --- /dev/null +++ b/Zend/tests/constants_005.phpt @@ -0,0 +1,11 @@ +--TEST-- +Persistent case insensetive and user defined constants +--FILE-- + +--EXPECTF-- +bool(%s) +int(123) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 789b4f7084..13edf258c4 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -3767,15 +3767,13 @@ static zend_constant* zend_get_ct_const(zval *const_name TSRMLS_DC) /* {{{ */ char *lookup_name = zend_str_tolower_dup(Z_STRVAL_P(const_name), Z_STRLEN_P(const_name)); if (zend_hash_find(EG(zend_constants), lookup_name, Z_STRLEN_P(const_name)+1, (void **) &c)==SUCCESS) { - if ((c->flags & CONST_CS) && memcmp(c->name, Z_STRVAL_P(const_name), Z_STRLEN_P(const_name))!=0) { + if ((c->flags & CONST_CT_SUBST) && !(c->flags & CONST_CS)) { efree(lookup_name); - return NULL; + return c; } - } else { - efree(lookup_name); - return NULL; } efree(lookup_name); + return NULL; } if (c->flags & CONST_CT_SUBST) { return c; diff --git a/Zend/zend_constants.c b/Zend/zend_constants.c index c672b5e4c6..bc4e7edf1b 100644 --- a/Zend/zend_constants.c +++ b/Zend/zend_constants.c @@ -231,7 +231,7 @@ ZEND_API int zend_get_constant(char *name, uint name_len, zval *result TSRMLS_DC lookup_name = zend_str_tolower_dup(name, name_len); if (zend_hash_find(EG(zend_constants), lookup_name, name_len+1, (void **) &c)==SUCCESS) { - if ((c->flags & CONST_CS) && memcmp(c->name, name, name_len) != 0) { + if (c->flags & CONST_CS) { retval=0; } } else { -- 2.40.0