diff options
-rw-r--r-- | editors/awk.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/editors/awk.c b/editors/awk.c index f65449a..9f5a940 100644 --- a/editors/awk.c +++ b/editors/awk.c @@ -562,6 +562,8 @@ struct globals2 { var ptest__tmpvar; var awk_printf__tmpvar; var as_regex__tmpvar; + var exit__tmpvar; + var main__tmpvar; tsplitter exec_builtin__tspl; @@ -638,11 +640,6 @@ static void syntax_error(const char *message) bb_error_msg_and_die("%s:%i: %s", g_progname, g_lineno, message); } -static void zero_out_var(var *vp) -{ - memset(vp, 0, sizeof(*vp)); -} - /* ---- hash stuff ---- */ static unsigned hashidx(const char *name) @@ -3372,11 +3369,9 @@ static int awk_exit(int r) unsigned i; if (!exiting) { - var tv; exiting = TRUE; nextrec = FALSE; - zero_out_var(&tv); - evaluate(endseq.first, &tv); + evaluate(endseq.first, &G.exit__tmpvar); } /* waiting for children */ @@ -3404,7 +3399,6 @@ int awk_main(int argc UNUSED_PARAM, char **argv) llist_t *list_e = NULL; #endif int i; - var tv; INIT_G(); @@ -3514,8 +3508,7 @@ int awk_main(int argc UNUSED_PARAM, char **argv) newfile("/dev/stdout")->F = stdout; newfile("/dev/stderr")->F = stderr; - zero_out_var(&tv); - evaluate(beginseq.first, &tv); + evaluate(beginseq.first, &G.main__tmpvar); if (!mainseq.first && !endseq.first) awk_exit(EXIT_SUCCESS); @@ -3532,7 +3525,7 @@ int awk_main(int argc UNUSED_PARAM, char **argv) nextrec = FALSE; incvar(intvar[NR]); incvar(intvar[FNR]); - evaluate(mainseq.first, &tv); + evaluate(mainseq.first, &G.main__tmpvar); if (nextfile) break; |