shithub: kwa

Download patch

ref: 279f78a86cbff3f526fe1a1debd4d4f5766f96b0
parent: 10e72d182aad860492f6ec2e80b0c05a4dc20b7a
author: qwx <qwx@sciops.net>
date: Mon Oct 20 19:13:03 EDT 2025

fix crash when variable is used as both function name and argument

contributed to 9front by Kenneth Stailey, based on bwk awk.
fixes test from T.misc:

echo hello |
awk '  function foo(foo) {
                foo = 1
                foo()
        }
	{ foo(bar) }
'

--- a/parse.c
+++ b/parse.c
@@ -215,6 +215,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 */
--