git: 9front

Download patch

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