extract() optimization

From: Date: Sat, 09 Dec 2006 20:24:07 +0000
Subject: extract() optimization
Groups: php.internals 
Request: Send a blank email to internals+get-26879@lists.php.net to get a copy of this message
This patch should safely remove what appears to be unnecessary strlen() calls for php_valid_var_name() used by extract(). diff --git a/ext/standard/array.c b/ext/standard/array.c index fad4bf2..401957f 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, uint 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;
-Brian Shire shire@facebook.com shire@php.net aim: int80h

« previous php.internals (#26879) next »