From ae1a702501b7410048555d9b0537326fed760186 Mon Sep 17 00:00:00 2001 From: Andi Gutmans Date: Fri, 28 Dec 2001 16:36:04 +0000 Subject: [PATCH] - Fix some case insensitivity stuff in respect to classes --- Zend/zend_compile.c | 8 +++++--- Zend/zend_compile.h | 2 +- Zend/zend_language_parser.y | 10 +++++----- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 676cac10ec..13ffd01944 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -986,7 +986,7 @@ void do_fetch_class(znode *result, znode *class_entry, znode *class_name TSRMLS_ } -void do_fetch_class_name(znode *result, znode *class_name_entry, znode *class_name TSRMLS_DC) +void do_fetch_class_name(znode *result, znode *class_name_entry, znode *class_name, zend_bool case_sensitive TSRMLS_DC) { zend_uint length; @@ -995,7 +995,9 @@ void do_fetch_class_name(znode *result, znode *class_name_entry, znode *class_na } else { *result = *class_name_entry; } - + if (!case_sensitive) { + zend_str_tolower(class_name->u.constant.value.str.val, class_name->u.constant.value.str.len); + } length = 1 + result->u.constant.value.str.len + class_name->u.constant.value.str.len; result->u.constant.value.str.val = erealloc(result->u.constant.value.str.val, length+1); memcpy(&result->u.constant.value.str.val[result->u.constant.value.str.len], ":", sizeof(":")-1); @@ -2061,7 +2063,7 @@ void zend_do_fetch_constant(znode *result, znode *constant_container, znode *con switch (mode) { case ZEND_CT: if (constant_container) { - do_fetch_class_name(NULL, constant_container, constant_name TSRMLS_CC); + do_fetch_class_name(NULL, constant_container, constant_name, 1 TSRMLS_CC); *result = *constant_container; } else { *result = *constant_name; diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 739afcd898..48bb179d5c 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -275,7 +275,7 @@ int zend_do_begin_function_call(znode *function_name TSRMLS_DC); void zend_do_begin_method_call(znode *left_bracket TSRMLS_DC); void zend_do_begin_dynamic_function_call(znode *function_name TSRMLS_DC); void do_fetch_class(znode *result, znode *class_entry, znode *class_name TSRMLS_DC); -void do_fetch_class_name(znode *result, znode *class_entry, znode *class_name TSRMLS_DC); +void do_fetch_class_name(znode *result, znode *class_entry, znode *class_name, zend_bool case_sensitive TSRMLS_DC); void zend_do_begin_class_member_function_call(znode *class_name, znode *function_name TSRMLS_DC); void zend_do_end_function_call(znode *function_name, znode *result, znode *argument_list, int is_method, int is_dynamic_fcall TSRMLS_DC); void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC); diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 1fe2056133..7bbc039837 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -243,8 +243,8 @@ unticked_declaration_statement: ; decleration_class_name: - | parse_class_name_entry T_STRING { do_fetch_class_name(&$$, &$1, &$2 TSRMLS_CC); } - | T_STRING { $$ = $1; } + | parse_class_name_entry T_STRING { do_fetch_class_name(&$$, &$1, &$2, 0 TSRMLS_CC); } + | T_STRING { $$ = $1; zend_str_tolower($$.u.constant.value.str.val, $$.u.constant.value.str.len); } ; foreach_optional_arg: @@ -527,8 +527,8 @@ parse_class_entry: ; parse_class_name_entry: - parse_class_name_entry T_STRING T_PAAMAYIM_NEKUDOTAYIM { do_fetch_class_name(&$$, &$1, &$2 TSRMLS_CC); } - | T_STRING T_PAAMAYIM_NEKUDOTAYIM { $$ = $1; } + parse_class_name_entry T_STRING T_PAAMAYIM_NEKUDOTAYIM { do_fetch_class_name(&$$, &$1, &$2, 0 TSRMLS_CC); } + | T_STRING T_PAAMAYIM_NEKUDOTAYIM { $$ = $1; zend_str_tolower($$.u.constant.value.str.val, $$.u.constant.value.str.len); } ; namespace_class_entry: @@ -537,7 +537,7 @@ namespace_class_entry: ; new_class_entry: - parse_class_entry static_or_variable_string { do_fetch_class(&$$, &$1, &$2 TSRMLS_CC); } + parse_class_entry T_STRING { do_fetch_class(&$$, &$1, &$2 TSRMLS_CC); } | static_or_variable_string { do_fetch_class(&$$, NULL, &$1 TSRMLS_CC); } ; -- 2.40.0