]> granicus.if.org Git - php/commitdiff
- Fix some case insensitivity stuff in respect to classes
authorAndi Gutmans <andi@php.net>
Fri, 28 Dec 2001 16:36:04 +0000 (16:36 +0000)
committerAndi Gutmans <andi@php.net>
Fri, 28 Dec 2001 16:36:04 +0000 (16:36 +0000)
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_language_parser.y

index 676cac10ec2da91b8859386002b40b40683d4d99..13ffd01944ab54e8c30f716ddc8de802f45599cf 100644 (file)
@@ -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;
index 739afcd8985ca5afdbb1942437d00c2039905801..48bb179d5cf38464578b44b8d8c9ae4ca4e98f19 100644 (file)
@@ -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);
index 1fe20561332d12aaedb8e53d4be7fd95ca79ba6f..7bbc0398375a75a3a28fb72ed41a26c465cd6577 100644 (file)
@@ -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); }
 ;