diff --git a/src/interpreter.h b/src/interpreter.h index 591fd2caefde3180274f9dd1fda592c5e01e5125..156f287a1b783a09674b639a777d664784b3e528 100644 --- a/src/interpreter.h +++ b/src/interpreter.h @@ -983,7 +983,12 @@ static int eval_instruction(unsigned char *pc) CASE(F_RETURN_LOCAL); instr=GET_ARG(); - pop_n_elems(sp-1 - (fp->locals+instr)); + if(fp->expendible <= fp->locals+instr) + { + pop_n_elems(sp-1 - (fp->locals+instr)); + }else{ + push_svalue(fp->locals+instr); + } print_return_value(); goto do_return;