X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/5dd6771b28c257af405d7248639ed0e3bcdce38b..e56972cabb200aa655374e95bbbbcf18d0ddabe0:/sbr/snprintb.c diff --git a/sbr/snprintb.c b/sbr/snprintb.c index 5f3f1243..629da4b7 100644 --- a/sbr/snprintb.c +++ b/sbr/snprintb.c @@ -18,21 +18,28 @@ snprintb (char *buffer, size_t n, unsigned v, char *bits) snprintf (buffer, n, bits && *bits == 010 ? "0%o" : "0x%x", v); bp = buffer + strlen(buffer); + n -= strlen(buffer); if (bits && *++bits) { j = 0; *bp++ = '<'; - while ((i = *bits++)) + while ((i = *bits++) && n > 1) if (v & (1 << (i - 1))) { - if (j++) + if (j++ && n > 1) { *bp++ = ','; - for (; (c = *bits) > 32; bits++) + n--; + } + for (; (c = *bits) > 32 && n > 1; bits++) { *bp++ = c; + n--; + } } else for (; *bits > 32; bits++) continue; - *bp++ = '>'; + if (n > 1) + *bp++ = '>'; + *bp = 0; }