@@ -444,12 +444,13 @@ void basic_set_int_array_variable(const char* var, int64_t index, int64_t value,
444444void dim_statement (struct basic_ctx * ctx )
445445{
446446 accept_or_return (DIM , ctx );
447- const char * array_name = tokenizer_variable_name (ctx );
447+ size_t var_length ;
448+ const char * array_name = tokenizer_variable_name (ctx , & var_length );
448449 accept_or_return (VARIABLE , ctx );
449450 accept_or_return (COMMA , ctx );
450451 int64_t array_size = expr (ctx );
451452 accept_or_return (NEWLINE , ctx );
452- char last = array_name [strlen ( array_name ) - 1 ];
453+ char last = array_name [var_length - 1 ];
453454 switch (last ) {
454455 case '#' :
455456 basic_dim_double_array (array_name , array_size , ctx );
@@ -465,12 +466,13 @@ void dim_statement(struct basic_ctx* ctx)
465466void redim_statement (struct basic_ctx * ctx )
466467{
467468 accept_or_return (REDIM , ctx );
468- const char * array_name = tokenizer_variable_name (ctx );
469+ size_t var_length ;
470+ const char * array_name = tokenizer_variable_name (ctx , & var_length );
469471 accept_or_return (VARIABLE , ctx );
470472 accept_or_return (COMMA , ctx );
471473 int64_t array_size = expr (ctx );
472474 accept_or_return (NEWLINE , ctx );
473- char last = array_name [strlen ( array_name ) - 1 ];
475+ char last = array_name [var_length - 1 ];
474476 switch (last ) {
475477 case '#' :
476478 basic_redim_double_array (array_name , array_size , ctx );
@@ -667,12 +669,13 @@ bool basic_push_double_array(const char* var, int64_t push_pos, struct basic_ctx
667669void push_statement (struct basic_ctx * ctx )
668670{
669671 accept_or_return (PUSH , ctx );
670- const char * array_name = tokenizer_variable_name (ctx );
672+ size_t var_length ;
673+ const char * array_name = tokenizer_variable_name (ctx , & var_length );
671674 accept_or_return (VARIABLE , ctx );
672675 accept_or_return (COMMA , ctx );
673676 int64_t push_pos = expr (ctx );
674677 accept_or_return (NEWLINE , ctx );
675- char last = array_name [strlen ( array_name ) - 1 ];
678+ char last = array_name [var_length - 1 ];
676679 switch (last ) {
677680 case '#' :
678681 basic_push_double_array (array_name , push_pos , ctx );
@@ -688,12 +691,13 @@ void push_statement(struct basic_ctx* ctx)
688691void pop_statement (struct basic_ctx * ctx )
689692{
690693 accept_or_return (POP , ctx );
691- const char * array_name = tokenizer_variable_name (ctx );
694+ size_t var_length ;
695+ const char * array_name = tokenizer_variable_name (ctx , & var_length );
692696 accept_or_return (VARIABLE , ctx );
693697 accept_or_return (COMMA , ctx );
694698 int64_t pop_pos = expr (ctx );
695699 accept_or_return (NEWLINE , ctx );
696- char last = array_name [strlen ( array_name ) - 1 ];
700+ char last = array_name [var_length - 1 ];
697701 switch (last ) {
698702 case '#' :
699703 basic_pop_double_array (array_name , pop_pos , ctx );
0 commit comments