ref: 3ad7388b7424d20f343d12b4f2282fc6d3938e9e
parent: a6e5d4bae6075c741a39fcba62a365d9dffaed93
author: qwx <qwx@sciops.net>
date: Mon Oct 20 05:01:06 EDT 2025
awk: properly handle number to rune conversion and empty strings in *printf fixes the following cases: echo '' | awk '{ x = sprintf("_%c_%c", $1, $2); print x }' awk 'BEGIN{ printf "%c\n", 9320 }'
--- a/sys/src/cmd/awk/run.c
+++ b/sys/src/cmd/awk/run.c
@@ -957,18 +957,16 @@
break;
case 5:
if (isnum(x)) {
- if (getfval(x)) {
- *p++ = (uchar)getfval(x);
- *p = '\0';
- } else {
- *p++ = '\0';
- *p = '\0';
- }
- } else {
- chartorune(&r, getsval(x));
+ r = getfval(x);
p += runetochar(p, &r);
- *p = '\0';
+ } else {
+ t = getsval(x);
+ if(*t != '\0'){
+ chartorune(&r, t);
+ p += runetochar(p, &r);
+ }
}
+ *p = '\0';
break;
}
if (istemp(x))
--
⑨