From 966cafcc77d8cda5d1a95bc73080e9a9b9010a45 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 2 Jul 2021 14:33:13 +0200 Subject: [PATCH] awk: use "static" tmpvars in main and exit function old new delta awk_exit 103 93 -10 awk_main 850 832 -18 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-28) Total: -28 bytes Signed-off-by: Denys Vlasenko --- editors/awk.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/editors/awk.c b/editors/awk.c index f65449a09..9f5a94037 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;