diff options
| -rw-r--r-- | Zend/zend_API.c | 8 | ||||
| -rw-r--r-- | Zend/zend_builtin_functions.c | 14 | ||||
| -rw-r--r-- | Zend/zend_compile.c | 16 | ||||
| -rw-r--r-- | Zend/zend_constants.c | 4 | ||||
| -rw-r--r-- | Zend/zend_execute.c | 6 | ||||
| -rw-r--r-- | Zend/zend_execute_API.c | 4 | ||||
| -rw-r--r-- | Zend/zend_language_parser.y | 4 | ||||
| -rw-r--r-- | Zend/zend_object_handlers.c | 2 | ||||
| -rw-r--r-- | Zend/zend_operators.c | 11 | ||||
| -rw-r--r-- | Zend/zend_operators.h | 1 |
10 files changed, 41 insertions, 29 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 030ca9489f..3ef434f154 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -1229,7 +1229,7 @@ ZEND_API zend_class_entry *zend_register_internal_class(zend_class_entry *orig_c char *lowercase_name = zend_strndup(orig_class_entry->name, orig_class_entry->name_length); *class_entry = *orig_class_entry; - zend_str_tolower(lowercase_name, class_entry->name_length); + zend_str_tolower_nlc(lowercase_name, class_entry->name_length); class_entry->type = ZEND_INTERNAL_CLASS; class_entry->parent = NULL; @@ -1326,7 +1326,7 @@ zend_bool zend_is_callable(zval *callable, zend_bool syntax_only, char **callabl return 1; lcname = estrndup(Z_STRVAL_P(callable), Z_STRLEN_P(callable)); - zend_str_tolower(lcname, Z_STRLEN_P(callable)); + zend_str_tolower_nlc(lcname, Z_STRLEN_P(callable)); if (zend_hash_exists(EG(function_table), lcname, Z_STRLEN_P(callable)+1)) retval = 1; efree(lcname); @@ -1362,7 +1362,7 @@ zend_bool zend_is_callable(zval *callable, zend_bool syntax_only, char **callabl return 1; lcname = estrndup(Z_STRVAL_PP(obj), Z_STRLEN_PP(obj)); - zend_str_tolower(lcname, Z_STRLEN_PP(obj)); + zend_str_tolower_nlc(lcname, Z_STRLEN_PP(obj)); if (zend_lookup_class(lcname, Z_STRLEN_PP(obj), &pce TSRMLS_CC) == SUCCESS) { ce = *pce; } @@ -1389,7 +1389,7 @@ zend_bool zend_is_callable(zval *callable, zend_bool syntax_only, char **callabl if (ce) { lcname = estrndup(Z_STRVAL_PP(method), Z_STRLEN_PP(method)); - zend_str_tolower(lcname, Z_STRLEN_PP(method)); + zend_str_tolower_nlc(lcname, Z_STRLEN_PP(method)); if (zend_hash_exists(&ce->function_table, lcname, Z_STRLEN_PP(method)+1)) retval = 1; efree(lcname); diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 2c2fedd871..a32b3487ca 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -564,7 +564,7 @@ ZEND_FUNCTION(get_parent_class) zend_class_entry **pce; SEPARATE_ZVAL(arg); - zend_str_tolower(Z_STRVAL_PP(arg), Z_STRLEN_PP(arg)); + zend_str_tolower_nlc(Z_STRVAL_PP(arg), Z_STRLEN_PP(arg)); if (zend_lookup_class(Z_STRVAL_PP(arg), Z_STRLEN_PP(arg), &pce TSRMLS_CC) == SUCCESS) { ce = *pce; } @@ -601,7 +601,7 @@ static void is_a_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool only_subclass) convert_to_string_ex(class_name); lcname = estrndup(Z_STRVAL_PP(class_name), Z_STRLEN_PP(class_name)); - zend_str_tolower(lcname, Z_STRLEN_PP(class_name)); + zend_str_tolower_nlc(lcname, Z_STRLEN_PP(class_name)); if (only_subclass) ce = Z_OBJCE_PP(obj)->parent; @@ -651,7 +651,7 @@ ZEND_FUNCTION(get_class_vars) convert_to_string_ex(class_name); lcname = estrndup((*class_name)->value.str.val, (*class_name)->value.str.len); - zend_str_tolower(lcname, (*class_name)->value.str.len); + zend_str_tolower_nlc(lcname, (*class_name)->value.str.len); if (zend_lookup_class(lcname, Z_STRLEN_PP(class_name), &pce TSRMLS_CC) == FAILURE) { efree(lcname); @@ -718,7 +718,7 @@ ZEND_FUNCTION(get_class_methods) ce = Z_OBJCE_PP(class); } else if (Z_TYPE_PP(class) == IS_STRING) { SEPARATE_ZVAL(class); - zend_str_tolower(Z_STRVAL_PP(class), Z_STRLEN_PP(class)); + zend_str_tolower_nlc(Z_STRVAL_PP(class), Z_STRLEN_PP(class)); if (zend_lookup_class(Z_STRVAL_PP(class), Z_STRLEN_PP(class), &pce TSRMLS_CC) == SUCCESS) { ce = *pce; @@ -764,7 +764,7 @@ ZEND_FUNCTION(method_exists) convert_to_string_ex(method_name); lcname = estrndup((*method_name)->value.str.val, (*method_name)->value.str.len); - zend_str_tolower(lcname, (*method_name)->value.str.len); + zend_str_tolower_nlc(lcname, (*method_name)->value.str.len); if (zend_hash_exists(&Z_OBJCE_PP(klass)->function_table, lcname, (*method_name)->value.str.len+1)) { efree(lcname); RETURN_TRUE; @@ -788,7 +788,7 @@ ZEND_FUNCTION(class_exists) } convert_to_string_ex(class_name); lcname = estrndup((*class_name)->value.str.val, (*class_name)->value.str.len); - zend_str_tolower(lcname, (*class_name)->value.str.len); + zend_str_tolower_nlc(lcname, (*class_name)->value.str.len); if (zend_hash_exists(EG(class_table), lcname, (*class_name)->value.str.len+1)) { efree(lcname); RETURN_TRUE; @@ -814,7 +814,7 @@ ZEND_FUNCTION(function_exists) } convert_to_string_ex(function_name); lcname = estrndup((*function_name)->value.str.val, (*function_name)->value.str.len); - zend_str_tolower(lcname, (*function_name)->value.str.len); + zend_str_tolower_nlc(lcname, (*function_name)->value.str.len); retval = (zend_hash_find(EG(function_table), lcname, (*function_name)->value.str.len+1, (void **)&func) == SUCCESS); efree(lcname); diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 39c0fa035d..081dfaf145 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -670,7 +670,7 @@ void zend_do_import(int type, znode *what TSRMLS_DC) if (what) { if (type == T_FUNCTION || type == T_CLASS) { - zend_str_tolower(what->u.constant.value.str.val, what->u.constant.value.str.len); + zend_str_tolower_nlc(what->u.constant.value.str.val, what->u.constant.value.str.len); } opline.op2 = *what; } else { @@ -844,7 +844,7 @@ void zend_do_add_variable(znode *result, znode *op1, znode *op2 TSRMLS_DC) static void zend_lowercase_znode_if_const(znode *z) { if (z->op_type == IS_CONST) { - zend_str_tolower(z->u.constant.value.str.val, z->u.constant.value.str.len); + zend_str_tolower_nlc(z->u.constant.value.str.val, z->u.constant.value.str.len); } } @@ -903,7 +903,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n int function_begin_line = function_token->u.opline_num; function_token->u.op_array = CG(active_op_array); - zend_str_tolower(name, name_len); + zend_str_tolower_nlc(name, name_len); init_op_array(&op_array, ZEND_USER_FUNCTION, INITIAL_OP_ARRAY_SIZE TSRMLS_CC); @@ -1032,7 +1032,7 @@ int zend_do_begin_function_call(znode *function_name TSRMLS_DC) { zend_function *function; - zend_str_tolower(function_name->u.constant.value.str.val, function_name->u.constant.value.str.len); + zend_str_tolower_nlc(function_name->u.constant.value.str.val, function_name->u.constant.value.str.len); if (zend_hash_find(CG(function_table), function_name->u.constant.value.str.val, function_name->u.constant.value.str.len+1, (void **) &function)==FAILURE) { zend_do_begin_dynamic_function_call(function_name TSRMLS_CC); return 1; /* Dynamic */ @@ -1126,7 +1126,7 @@ void do_fetch_class(znode *result, znode *class_entry, znode *class_name TSRMLS_ SET_UNUSED(opline->op1); CG(catch_begin) = fetch_class_op_number; } - zend_str_tolower(class_name->u.constant.value.str.val, class_name->u.constant.value.str.len); + zend_str_tolower_nlc(class_name->u.constant.value.str.val, class_name->u.constant.value.str.len); if ((class_name->u.constant.value.str.len == (sizeof("self") - 1)) && !memcmp(class_name->u.constant.value.str.val, "self", sizeof("self"))) { SET_UNUSED(opline->op2); @@ -1161,7 +1161,7 @@ void do_fetch_class_name(znode *result, znode *class_name_entry, znode *class_na *result = *class_name_entry; } if (!case_sensitive) { - zend_str_tolower(class_name->u.constant.value.str.val, class_name->u.constant.value.str.len); + zend_str_tolower_nlc(class_name->u.constant.value.str.val, class_name->u.constant.value.str.len); } length = sizeof("::")-1 + result->u.constant.value.str.len + class_name->u.constant.value.str.len; @@ -1542,7 +1542,7 @@ static void create_class(HashTable *class_table, char *name, int name_length, ze new_class_entry->refcount = 1; new_class_entry->constants_updated = 0; - zend_str_tolower(new_class_entry->name, new_class_entry->name_length); + zend_str_tolower_nlc(new_class_entry->name, new_class_entry->name_length); zend_hash_init(&new_class_entry->function_table, 10, NULL, ZEND_FUNCTION_DTOR, 0); zend_hash_init(&new_class_entry->class_table, 10, NULL, ZEND_CLASS_DTOR, 0); @@ -2015,7 +2015,7 @@ void zend_do_begin_class_declaration(znode *class_token, znode *class_name, znod new_class_entry->refcount = 1; new_class_entry->constants_updated = 0; - zend_str_tolower(new_class_entry->name, new_class_entry->name_length); + zend_str_tolower_nlc(new_class_entry->name, new_class_entry->name_length); zend_hash_init(&new_class_entry->function_table, 10, NULL, ZEND_FUNCTION_DTOR, 0); zend_hash_init(&new_class_entry->class_table, 10, NULL, ZEND_CLASS_DTOR, 0); diff --git a/Zend/zend_constants.c b/Zend/zend_constants.c index 34350d3eb2..cd3d7c7232 100644 --- a/Zend/zend_constants.c +++ b/Zend/zend_constants.c @@ -214,7 +214,7 @@ ZEND_API int zend_get_constant(char *name, uint name_len, zval *result TSRMLS_DC if (zend_hash_find(EG(zend_constants), name, name_len+1, (void **) &c) == FAILURE) { lookup_name = do_alloca(name_len+1); memcpy(lookup_name, name, name_len+1); - zend_str_tolower(lookup_name, name_len); + zend_str_tolower_nlc(lookup_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) { @@ -249,7 +249,7 @@ ZEND_API int zend_register_constant(zend_constant *c TSRMLS_DC) memcpy(lowercase_name, c->name, c->name_len); if (!(c->flags & CONST_CS)) { - zend_str_tolower(lowercase_name, c->name_len); + zend_str_tolower_nlc(lowercase_name, c->name_len); } if (zend_hash_add(EG(zend_constants), lowercase_name, c->name_len, (void *) c, sizeof(zend_constant), NULL)==FAILURE) { diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 001eb0b1c2..82fb100b6f 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1837,7 +1837,7 @@ binary_assign_op_addr_obj: tmp = *class_name; zval_copy_ctor(&tmp); convert_to_string(&tmp); - zend_str_tolower(tmp.value.str.val, tmp.value.str.len); + zend_str_tolower_nlc(tmp.value.str.val, tmp.value.str.len); class_name_strval = tmp.value.str.val; class_name_strlen = tmp.value.str.len; @@ -1970,7 +1970,7 @@ binary_assign_op_addr_obj: tmp = *function_name; zval_copy_ctor(&tmp); convert_to_string(&tmp); - zend_str_tolower(tmp.value.str.val, tmp.value.str.len); + zend_str_tolower_nlc(tmp.value.str.val, tmp.value.str.len); function_name_strval = tmp.value.str.val; function_name_strlen = tmp.value.str.len; @@ -2019,7 +2019,7 @@ binary_assign_op_addr_obj: tmp = *function_name; zval_copy_ctor(&tmp); convert_to_string(&tmp); - zend_str_tolower(tmp.value.str.val, tmp.value.str.len); + zend_str_tolower_nlc(tmp.value.str.val, tmp.value.str.len); function_name_strval = tmp.value.str.val; function_name_strlen = tmp.value.str.len; diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index e3903e291b..14de9c028f 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -531,7 +531,7 @@ int call_user_function_ex(HashTable *function_table, zval **object_pp, zval *fun int found; lc_class = estrndup(Z_STRVAL_PP(object_pp), Z_STRLEN_PP(object_pp)); - zend_str_tolower(lc_class, Z_STRLEN_PP(object_pp)); + zend_str_tolower_nlc(lc_class, Z_STRLEN_PP(object_pp)); found = zend_lookup_class(lc_class, Z_STRLEN_PP(object_pp), &ce TSRMLS_CC); efree(lc_class); if (found == FAILURE) @@ -550,7 +550,7 @@ int call_user_function_ex(HashTable *function_table, zval **object_pp, zval *fun function_name_copy = *function_name; zval_copy_ctor(&function_name_copy); - zend_str_tolower(function_name_copy.value.str.val, function_name_copy.value.str.len); + zend_str_tolower_nlc(function_name_copy.value.str.val, function_name_copy.value.str.len); original_function_state_ptr = EG(function_state_ptr); if (zend_hash_find(function_table, function_name_copy.value.str.val, function_name_copy.value.str.len+1, (void **) &EX(function_state).function)==FAILURE) { diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 618a94fd55..9fceaadbd5 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -291,7 +291,7 @@ extends_from: declaration_class_name: | 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); } + | T_STRING { $$ = $1; zend_str_tolower_nlc($$.u.constant.value.str.val, $$.u.constant.value.str.len); } ; foreach_optional_arg: @@ -577,7 +577,7 @@ parse_class_entry: parse_class_name_entry: 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); } + | T_STRING T_PAAMAYIM_NEKUDOTAYIM { $$ = $1; zend_str_tolower_nlc($$.u.constant.value.str.val, $$.u.constant.value.str.len); } ; catch_or_import_class_entry: diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index 106dd18f86..55c983329f 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -379,7 +379,7 @@ static union _zend_function *zend_std_get_method(zval *object, char *method_name lc_method_name = do_alloca(method_len+1); /* Create a zend_copy_str_tolower(dest, src, src_length); */ memcpy(lc_method_name, method_name, method_len+1); - zend_str_tolower(lc_method_name, method_len); + zend_str_tolower_nlc(lc_method_name, method_len); zobj = Z_OBJ_P(object); if (zend_hash_find(&zobj->ce->function_table, lc_method_name, method_len+1, (void **)&func_method) == FAILURE) { diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index ddb4eb1ab5..629e017f09 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1581,6 +1581,17 @@ ZEND_API void zend_str_tolower(char *str, unsigned int length) } } +ZEND_API void zend_str_tolower_nlc(char *str, unsigned int length) +{ + register char *p=str, *end=p+length; + + while (p<end) { + if (*p >= 'A' && *p <= 'Z') { + *p = (*p)+32; + } + p++; + } +} ZEND_API int zend_binary_strcmp(char *s1, uint len1, char *s2, uint len2) { diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h index c0fa057494..c1c97d3011 100644 --- a/Zend/zend_operators.h +++ b/Zend/zend_operators.h @@ -171,6 +171,7 @@ ZEND_API int numeric_compare_function(zval *result, zval *op1, zval *op2 TSRMLS_ ZEND_API int string_compare_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API void zend_str_tolower(char *str, unsigned int length); +ZEND_API void zend_str_tolower_nlc(char *str, unsigned int length); ZEND_API int zend_binary_zval_strcmp(zval *s1, zval *s2); ZEND_API int zend_binary_zval_strncmp(zval *s1, zval *s2, zval *s3); ZEND_API int zend_binary_zval_strcasecmp(zval *s1, zval *s2); |
