@@ -536,9 +536,9 @@ sl_string_char_at_index(sl_vm_t* vm, SLVAL self, SLVAL index)
536
536
SLVAL
537
537
sl_string_split (sl_vm_t * vm , SLVAL self , size_t argc , SLVAL * argv )
538
538
{
539
- SLVAL substr = argv [ 0 ] ;
539
+ SLVAL substr ;
540
540
sl_string_t * haystack = sl_get_string (vm , self );
541
- sl_string_t * needle = sl_get_string ( vm , substr ) ;
541
+ sl_string_t * needle ;
542
542
SLVAL ret = sl_make_array (vm , 0 , NULL ), piece ;
543
543
uint8_t * haystack_buff = haystack -> buff ;
544
544
uint8_t * start_ptr = haystack_buff ;
@@ -547,6 +547,15 @@ sl_string_split(sl_vm_t* vm, SLVAL self, size_t argc, SLVAL* argv)
547
547
size_t buff_len ;
548
548
uint32_t c ;
549
549
long limit = 0 ;
550
+
551
+ if (argc > 0 ) {
552
+ substr = argv [0 ];
553
+ } else {
554
+ substr = sl_make_cstring (vm , " " );
555
+ }
556
+
557
+ needle = sl_get_string (vm , substr );
558
+
550
559
if (argc > 1 ) {
551
560
limit = sl_get_int (sl_expect (vm , argv [1 ], vm -> lib .Int ));
552
561
if (limit < 0 ) {
@@ -764,7 +773,7 @@ sl_init_string(sl_vm_t* vm)
764
773
sl_define_method (vm , vm -> lib .String , "url_encode" , 0 , sl_string_url_encode );
765
774
sl_define_method (vm , vm -> lib .String , "index" , 1 , sl_string_index );
766
775
sl_define_method (vm , vm -> lib .String , "[]" , 1 , sl_string_char_at_index );
767
- sl_define_method (vm , vm -> lib .String , "split" , -2 , sl_string_split );
776
+ sl_define_method (vm , vm -> lib .String , "split" , -1 , sl_string_split );
768
777
sl_define_method (vm , vm -> lib .String , "==" , 1 , sl_string_eq );
769
778
sl_define_method (vm , vm -> lib .String , "~" , 1 , sl_string_is_match );
770
779
sl_define_method (vm , vm -> lib .String , "<=>" , 1 , sl_string_spaceship );
0 commit comments