From 72ecdc046e9358c021c6128df5a7a3d25ae8d3bf Mon Sep 17 00:00:00 2001 From: n00b87 Date: Thu, 12 Feb 2026 14:00:36 -0600 Subject: [PATCH] Fixed crash when trying to set variable id that cannot be found --- rcbasic_build/parser.h | 26 +++++++++++++++++--------- rcbasic_build/rcbasic_build.depend | 4 ++-- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/rcbasic_build/parser.h b/rcbasic_build/parser.h index 58d1b03..5747682 100755 --- a/rcbasic_build/parser.h +++ b/rcbasic_build/parser.h @@ -6195,15 +6195,23 @@ bool check_rule() } } else - { - switch(var_type) - { - case ID_TYPE_NUM: - vm_asm.push_back("mov !" + rc_intToString(id[var_id_index].vec_pos) + " " + expr_result); - break; - case ID_TYPE_STR: - vm_asm.push_back("mov$ !" + rc_intToString(id[var_id_index].vec_pos) + " " + expr_result); - break; + { + if(var_id_index >= 0 && var_id_index < id.size()) + { + switch(var_type) + { + case ID_TYPE_NUM: + vm_asm.push_back("mov !" + rc_intToString(id[var_id_index].vec_pos) + " " + expr_result); + break; + case ID_TYPE_STR: + vm_asm.push_back("mov$ !" + rc_intToString(id[var_id_index].vec_pos) + " " + expr_result); + break; + } + } + else + { + rc_setError("Identifier \"" + var_id + "\" could not be resolved"); + return false; } } diff --git a/rcbasic_build/rcbasic_build.depend b/rcbasic_build/rcbasic_build.depend index 08c9060..2637b70 100755 --- a/rcbasic_build/rcbasic_build.depend +++ b/rcbasic_build/rcbasic_build.depend @@ -1,5 +1,5 @@ # depslib dependency file v1.0 -1769580634 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp +1770701118 source:/home/n00b/Projects/RCBASIC4/rcbasic_build/main.cpp @@ -37,7 +37,7 @@ 1752004854 /home/n00b/Projects/RCBASIC4/rcbasic_build/constants.h -1758412944 /home/n00b/Projects/RCBASIC4/rcbasic_build/parser.h +1770926352 /home/n00b/Projects/RCBASIC4/rcbasic_build/parser.h "tokenizer.h" "identifier.h" "rc_global.h"