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 */
--
⑨