@@ -535,8 +535,14 @@ PHP_FUNCTION(spl_autoload_register)
535
535
ZSTR_VAL (lc_name )[ZSTR_LEN (lc_name )] = '\0' ;
536
536
} else {
537
537
ZVAL_UNDEF (& alfi .closure );
538
- lc_name = zend_string_alloc (ZSTR_LEN (func_name ), 0 );
539
- zend_str_tolower_copy (ZSTR_VAL (lc_name ), ZSTR_VAL (func_name ), ZSTR_LEN (func_name ));
538
+ /* Skip leading \ */
539
+ if (ZSTR_VAL (func_name )[0 ] == '\\' ) {
540
+ lc_name = zend_string_alloc (ZSTR_LEN (func_name ) - 1 , 0 );
541
+ zend_str_tolower_copy (ZSTR_VAL (lc_name ), ZSTR_VAL (func_name ) + 1 , ZSTR_LEN (func_name ) - 1 );
542
+ } else {
543
+ lc_name = zend_string_alloc (ZSTR_LEN (func_name ), 0 );
544
+ zend_str_tolower_copy (ZSTR_VAL (lc_name ), ZSTR_VAL (func_name ), ZSTR_LEN (func_name ));
545
+ }
540
546
}
541
547
zend_string_release (func_name );
542
548
@@ -654,8 +660,14 @@ PHP_FUNCTION(spl_autoload_unregister)
654
660
memcpy (ZSTR_VAL (lc_name ) + ZSTR_LEN (func_name ), & Z_OBJ_HANDLE_P (zcallable ), sizeof (uint32_t ));
655
661
ZSTR_VAL (lc_name )[ZSTR_LEN (lc_name )] = '\0' ;
656
662
} else {
657
- lc_name = zend_string_alloc (ZSTR_LEN (func_name ), 0 );
658
- zend_str_tolower_copy (ZSTR_VAL (lc_name ), ZSTR_VAL (func_name ), ZSTR_LEN (func_name ));
663
+ /* Skip leading \ */
664
+ if (ZSTR_VAL (func_name )[0 ] == '\\' ) {
665
+ lc_name = zend_string_alloc (ZSTR_LEN (func_name ) - 1 , 0 );
666
+ zend_str_tolower_copy (ZSTR_VAL (lc_name ), ZSTR_VAL (func_name ) + 1 , ZSTR_LEN (func_name ) - 1 );
667
+ } else {
668
+ lc_name = zend_string_alloc (ZSTR_LEN (func_name ), 0 );
669
+ zend_str_tolower_copy (ZSTR_VAL (lc_name ), ZSTR_VAL (func_name ), ZSTR_LEN (func_name ));
670
+ }
659
671
}
660
672
zend_string_release (func_name );
661
673
0 commit comments