From 3ba2f61ff006c308a904c8b1a4bc433082ce87c8 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Tue, 6 Dec 2011 22:00:44 +0200 Subject: Misc fixes from John. --- eval.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index cd5a5844..22f30773 100644 --- a/eval.c +++ b/eval.c @@ -2507,7 +2507,7 @@ func_call: break; case Op_K_getline: /* no redirection */ - if (currule == BEGINFILE || currule == ENDFILE) + if (! currule || currule == BEGINFILE || currule == ENDFILE) fatal(_("non-redirected `getline' invalid inside `%s' rule"), ruletab[currule]); @@ -2654,6 +2654,12 @@ func_call: break; case Op_K_exit: + /* exit not allowed in user-defined comparison functions for "sorted_in"; + * This is done so that END blocks aren't executed more than once. + */ + if (! currule) + fatal(_("`exit' cannot be called in the current context")); + exiting = TRUE; POP_NUMBER(x1); exit_val = (int) x1; -- cgit v1.2.3