From dd5110bad05203b2b8843b9ed43aeee9ae16d0d9 Mon Sep 17 00:00:00 2001 From: chaoskagami Date: Sat, 11 Jun 2016 16:39:12 -0400 Subject: [PATCH] Flags not being reset could cause an issue (maybe) --- source/interp.c | 8 +++----- source/menu.c | 4 ++++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/source/interp.c b/source/interp.c index fecb7b5..a4c600f 100644 --- a/source/interp.c +++ b/source/interp.c @@ -178,10 +178,6 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug) if (debug) log("back\n"); code++; - if (offset < *code) { - // Went out of bounds. Error. - abort("Back underflowed.\n"); - } offset -= *code; code++; break; @@ -365,6 +361,8 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug) case OP_NEXT: if (debug) log("next\n"); + found = gt = lt = eq = 0; + bytecode = code + 1; #ifndef LOADER set_mode = 3; @@ -373,7 +371,7 @@ exec_bytecode(uint8_t *bytecode, uint16_t ver, uint32_t len, int debug) set_mode = 18; current_mode = &modes[set_mode]; #endif - offset = 0; + offset = new_offset = 0; code = bytecode; break; default: diff --git a/source/menu.c b/source/menu.c index 57d99fc..1d98f6a 100644 --- a/source/menu.c +++ b/source/menu.c @@ -72,9 +72,13 @@ static int cursor_y = 0; static int which_menu = 1; static int need_redraw = 1; +extern void waitcycles(uint32_t cycles); + uint32_t wait_key() { + waitcycles(100); // Moves too fast. Hopefully this prevents the issue. + uint32_t get = 0; while (get == 0) { if (HID_PAD & BUTTON_UP) -- 2.39.5