aboutsummaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2011-03-29 21:30:11 +0200
committerArnold D. Robbins <arnold@skeeve.com>2011-03-29 21:30:11 +0200
commit86d89c929013e64bf4e4b28af2facd549c3bfaba (patch)
treec3647d3c41cf3f363288d878269073aff4124cca /eval.c
parent2400cc5143383a881356a9f55e93b60037d851e5 (diff)
downloadegawk-86d89c929013e64bf4e4b28af2facd549c3bfaba.tar.gz
egawk-86d89c929013e64bf4e4b28af2facd549c3bfaba.tar.bz2
egawk-86d89c929013e64bf4e4b28af2facd549c3bfaba.zip
Fix next and exit from functions.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index a9928735..7c8f9b0f 100644
--- a/eval.c
+++ b/eval.c
@@ -2507,6 +2507,11 @@ func_call:
JUMPTO(pc->target_endfile); /* endfile block */
case Op_K_exit:
+ if (currule == END)
+ ni = pc->target_atexit;
+ else
+ ni = pc->target_end;
+
exiting = TRUE;
POP_NUMBER(x1);
exit_val = (int) x1;
@@ -2522,7 +2527,7 @@ func_call:
* or to Op_atexit
*/
unwind_stack(stack_bottom);
- JUMPTO(pc->target_jmp);
+ JUMPTO(ni);
case Op_K_next:
if (currule != Rule)