@@ -564,8 +564,14 @@ PHP_FUNCTION(spl_autoload_register)
564
564
ZSTR_VAL (lc_name )[ZSTR_LEN (lc_name )] = '\0' ;
565
565
} else {
566
566
ZVAL_UNDEF (& alfi .closure );
567
- lc_name = zend_string_alloc (ZSTR_LEN (func_name ), 0 );
568
- zend_str_tolower_copy (ZSTR_VAL (lc_name ), ZSTR_VAL (func_name ), ZSTR_LEN (func_name ));
567
+ /* Skip leading \ */
568
+ if (ZSTR_VAL (func_name )[0 ] == '\\' ) {
569
+ lc_name = zend_string_alloc (ZSTR_LEN (func_name ) - 1 , 0 );
570
+ zend_str_tolower_copy (ZSTR_VAL (lc_name ), ZSTR_VAL (func_name ) + 1 , ZSTR_LEN (func_name ) - 1 );
571
+ } else {
572
+ lc_name = zend_string_alloc (ZSTR_LEN (func_name ), 0 );
573
+ zend_str_tolower_copy (ZSTR_VAL (lc_name ), ZSTR_VAL (func_name ), ZSTR_LEN (func_name ));
574
+ }
569
575
}
570
576
zend_string_release (func_name );
571
577
@@ -683,8 +689,14 @@ PHP_FUNCTION(spl_autoload_unregister)
683
689
memcpy (ZSTR_VAL (lc_name ) + ZSTR_LEN (func_name ), & Z_OBJ_HANDLE_P (zcallable ), sizeof (uint32_t ));
684
690
ZSTR_VAL (lc_name )[ZSTR_LEN (lc_name )] = '\0' ;
685
691
} else {
686
- lc_name = zend_string_alloc (ZSTR_LEN (func_name ), 0 );
687
- zend_str_tolower_copy (ZSTR_VAL (lc_name ), ZSTR_VAL (func_name ), ZSTR_LEN (func_name ));
692
+ /* Skip leading \ */
693
+ if (ZSTR_VAL (func_name )[0 ] == '\\' ) {
694
+ lc_name = zend_string_alloc (ZSTR_LEN (func_name ) - 1 , 0 );
695
+ zend_str_tolower_copy (ZSTR_VAL (lc_name ), ZSTR_VAL (func_name ) + 1 , ZSTR_LEN (func_name ) - 1 );
696
+ } else {
697
+ lc_name = zend_string_alloc (ZSTR_LEN (func_name ), 0 );
698
+ zend_str_tolower_copy (ZSTR_VAL (lc_name ), ZSTR_VAL (func_name ), ZSTR_LEN (func_name ));
699
+ }
688
700
}
689
701
zend_string_release (func_name );
690
702
0 commit comments