From 14595634df55b698f0b924e75572df6f0b809555 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Tue, 16 Jul 2024 03:07:35 -0400 Subject: listbas: handle A+ ERROR- token (required bas.c changes); don't segfault on runaway variable name lookup. --- listbas.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'listbas.c') diff --git a/listbas.c b/listbas.c index d542bcd..884f763 100644 --- a/listbas.c +++ b/listbas.c @@ -441,6 +441,12 @@ CALLBACK(print_cmd) { } void aplus_op_color_on(unsigned char tok) { + switch(tok) { + default: + break; + } + + color_on(color_op); } void op_color_on(unsigned char tok) { @@ -535,9 +541,15 @@ CALLBACK(print_varname) { if(color) color_on(color_varnames); tok &= 0x7f; + for(i = vnstart, count = 0; count < tok; i++) { if(program[i] & 0x80) count++; + if(i == codestart) { + fprintf(outfh, "(bad var tok $%02x)", tok | 0x80); + return; + } } + do { c = program[i++]; if(color && c == ('(' | 0x80)) { @@ -640,6 +652,9 @@ int main(int argc, char **argv) { if(bas_type != B_ATARI && bas_type != B_APLUS) allow_hex_const = 1; + if(bas_type == B_APLUS) + aplus_errtok_hack = 1; + init_token_tables(); readfile(); -- cgit v1.2.3