]> granicus.if.org Git - php/commitdiff
- We need to store the length of the class name
authorMarcus Boerger <helly@php.net>
Wed, 21 Dec 2005 20:05:24 +0000 (20:05 +0000)
committerMarcus Boerger <helly@php.net>
Wed, 21 Dec 2005 20:05:24 +0000 (20:05 +0000)
ext/spl/php_spl.c

index 3d10631eaa9dda0768a4d147c82842db07fbb4aa..cb7f34f3697024162bbca180b6266f1acc788cdc 100755 (executable)
@@ -341,6 +341,7 @@ static void autoload_func_info_dtor(autoload_func_info *alfi)
 PHP_FUNCTION(spl_autoload_call)
 {
        zval **class_name, *retval = NULL;
+       int class_name_len;
        char *func_name, *lc_name;
        uint func_name_len;
        ulong dummy;
@@ -352,7 +353,8 @@ PHP_FUNCTION(spl_autoload_call)
        }
 
        if (SPL_G(autoload_functions)) {
-               lc_name = zend_str_tolower_dup(Z_STRVAL_PP(class_name), Z_STRLEN_PP(class_name));
+               class_name_len = Z_STRLEN_PP(class_name);
+               lc_name = zend_str_tolower_dup(Z_STRVAL_PP(class_name), class_name_len);
                zend_hash_internal_pointer_reset_ex(SPL_G(autoload_functions), &function_pos);
                while(zend_hash_has_more_elements_ex(SPL_G(autoload_functions), &function_pos) == SUCCESS && !EG(exception)) {
                        zend_hash_get_current_key_ex(SPL_G(autoload_functions), &func_name, &func_name_len, &dummy, 0, &function_pos);
@@ -361,7 +363,7 @@ PHP_FUNCTION(spl_autoload_call)
                        if (retval) {
                                zval_ptr_dtor(&retval);                                 
                        }
-                       if (zend_hash_exists(EG(class_table), lc_name, Z_STRLEN_PP(class_name)+1)) {
+                       if (zend_hash_exists(EG(class_table), lc_name, class_name_len + 1)) {
                                break;
                        }
                        zend_hash_move_forward_ex(SPL_G(autoload_functions), &function_pos);