From 34a1b1bb22e482e9a31e522e6df1b34d1673a20a Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sun, 19 Apr 2020 04:33:07 +0200 Subject: ?c: fix Bconv() misusage of strncat() --- sys/src/cmd/5c/list.c | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) (limited to 'sys/src/cmd/5c') diff --git a/sys/src/cmd/5c/list.c b/sys/src/cmd/5c/list.c index 66094c851..738315df8 100644 --- a/sys/src/cmd/5c/list.c +++ b/sys/src/cmd/5c/list.c @@ -17,25 +17,19 @@ listinit(void) int Bconv(Fmt *fp) { - char str[STRINGSZ], ss[STRINGSZ], *s; Bits bits; int i; - memset(str, 0, sizeof str); bits = va_arg(fp->args, Bits); while(bany(&bits)) { i = bnum(bits); - if(str[0]) - strncat(str, " ", sizeof str - 1); - if(var[i].sym == S) { - snprint(ss, sizeof ss, "$%ld", var[i].offset); - s = ss; - } else - s = var[i].sym->name; - strncat(str, s, sizeof str - 1); bits.b[i/32] &= ~(1L << (i%32)); + if(var[i].sym == S) + fmtprint(fp, "$%ld ", var[i].offset); + else + fmtprint(fp, "%s ", var[i].sym->name); } - return fmtstrcpy(fp, str); + return 0; } char *extra [] = { @@ -195,12 +189,10 @@ Dconv(Fmt *fp) int Rconv(Fmt *fp) { - char str[STRINGSZ]; Adr *a; int i, v; a = va_arg(fp->args, Adr*); - snprint(str, sizeof str, "GOK-reglist"); switch(a->type) { case D_CONST: if(a->reg != NREG) @@ -208,19 +200,14 @@ Rconv(Fmt *fp) if(a->sym != S) break; v = a->offset; - memset(str, 0, sizeof str); + fmtprint(fp, "["); for(i=0; i