diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2006-12-10 19:43:03 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2006-12-10 19:43:03 +0000 |
commit | e64cb1ae4d1be22d6844be9322fee4e7913b36b9 (patch) | |
tree | 79e0fc874f796fc372e248c2fdc9266330b958f7 | |
parent | 6ccde868be6bfbcf9bbe667579b13bca6941b099 (diff) | |
download | php-git-e64cb1ae4d1be22d6844be9322fee4e7913b36b9.tar.gz |
Optimize extract()
# Patch by Brian Shire
-rw-r--r-- | ext/standard/array.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index 128935e551..9aa3ccdac8 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -1270,15 +1270,13 @@ PHP_FUNCTION(array_search) /* }}} */ -static int php_valid_var_name(char *var_name) +static int php_valid_var_name(char *var_name, int len) { - int len, i; + int i; if (!var_name) return 0; - len = strlen(var_name); - if (!isalpha((int)((unsigned char *)var_name)[0]) && var_name[0] != '_') return 0; @@ -1409,7 +1407,7 @@ PHP_FUNCTION(extract) case EXTR_PREFIX_INVALID: if (final_name.len == 0) { - if (!php_valid_var_name(var_name)) { + if (!php_valid_var_name(var_name, var_name_len)) { smart_str_appendl(&final_name, Z_STRVAL_PP(prefix), Z_STRLEN_PP(prefix)); smart_str_appendc(&final_name, '_'); smart_str_appendl(&final_name, var_name, var_name_len); @@ -1426,7 +1424,7 @@ PHP_FUNCTION(extract) if (final_name.len) { smart_str_0(&final_name); - if (php_valid_var_name(final_name.c)) { + if (php_valid_var_name(final_name.c, final_name.len)) { if (extract_refs) { zval **orig_var; |