ref: 512ed418b64e0aed4ef0bbf3730717a06fcd1bec
parent: 8f68e89a895fb05b51429b02b4dd43ba65e3abfd
author: qwx <qwx@sciops.net>
date: Mon Oct 20 18:53:22 EDT 2025
awk: fix crash when a variable is used both as function name and argument (thanks Kenneth Stailey) fix derived from bwk awk. relevant test (from T.misc): echo hello | awk ' function foo(foo) { foo = 1 foo() } { foo(bar) } '
--- a/sys/src/cmd/awk/parse.c
+++ b/sys/src/cmd/awk/parse.c
@@ -238,6 +238,11 @@
SYNTAX( "`%s' is an array name and a function name", v->nval );
return;
}
+ if (isarg(v->nval) != -1) {
+ SYNTAX( "`%s' is both function name and argument name", v->nval );
+ return;
+ }
+
v->tval = FCN;
v->sval = (char *) st;
n = 0; /* count arguments */
--
⑨