# extract() optimization

- Thread: https://externals.io/message/26879
- Original archive: https://news-web.php.net/php.internals/26879
- Started by Brian Shire on 2006-12-09T20:24:07+00:00
- Messages: 2
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #26879 — Brian Shire — 2006-12-09T20:24:07+00:00

URL: https://externals.io/message/26879#26879

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

---

## #26889 — Ilia Alshanetsky — 2006-12-10T19:43:13+00:00

URL: https://externals.io/message/26879#26889 · In reply to: #26879

> This patch should safely remove what appears to be unnecessary  
> `strlen()` calls for php_valid_var_name() used by `extract()`.

Good catch, thanks. The patch is now in the CVS.

Ilia Alshanetsky
