git: 9front

Download patch

ref: f94873ffbdff4f0abfede0e36e43bfdbc97695d3
parent: a20312fedddfd8a6338a98b17a85e41ea3d3843a
author: qwx <qwx@sciops.net>
date: Sat Nov 8 18:21:59 EST 2025

awk: treat all empty strings equally (thanks cinap_lenrek)

--- a/sys/src/cmd/awk/run.c
+++ b/sys/src/cmd/awk/run.c
@@ -328,7 +328,7 @@
 	y = gettemp();
 	y->csub = CCOPY;	/* prevents freeing until call is over */
 	y->nval = x->nval;	/* BUG? */
-	y->sval = x->sval != nil && x->sval != EMPTY ? tostring(x->sval) : EMPTY;
+	y->sval = x->sval != nil && *x->sval ? tostring(x->sval) : EMPTY;
 	y->fval = x->fval;
 	y->tval = x->tval & ~(CON|FLD|REC|DONTFREE);	/* copy is not constant or field */
 	if (y->sval == EMPTY)
--- a/sys/src/cmd/awk/tran.c
+++ b/sys/src/cmd/awk/tran.c
@@ -229,7 +229,7 @@
 		p->sval = (char *) ENVtab;
 		p->tval = ARR;
 	} else {
-		p->sval = s != nil && s != EMPTY ? tostring(s) : EMPTY;
+		p->sval = s && *s ? tostring(s) : EMPTY;
 		p->tval = t;
 		if (p->sval == EMPTY)
 			p->tval |= DONTFREE;
@@ -342,7 +342,7 @@
 		donefld = 0;	/* mark $1... invalid */
 		donerec = 1;
 	}
-	t = s != nil && s != EMPTY ? tostring(s) : EMPTY;	/* in case it's self-assign */
+	t = s && *s ? tostring(s) : EMPTY;	/* in case it's self-assign */
 	vp->tval &= ~NUM;
 	vp->tval |= STR;
 	if (freeable(vp))
--