X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/0517d2ce0a6541725fd98e882f91ca89d4bf88d2..459e594901d02a6f879f07a39cc698ce678aefb6:/sbr/fmt_scan.c diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index a47c170e..4416b54c 100644 --- a/sbr/fmt_scan.c +++ b/sbr/fmt_scan.c @@ -299,10 +299,20 @@ cpstripped (charstring_t dest, size_t max, char *str) prevCtrl = 0; #ifdef MULTIBYTE_SUPPORT - charstring_push_back_chars (dest, altstr ? altstr : str, char_len, w); - max -= w; - str += char_len; - altstr = NULL; + assert(w >= 0); + if (max >= (size_t) w) { + charstring_push_back_chars (dest, altstr ? altstr : str, char_len, w); + max -= w; + str += char_len; + altstr = NULL; + } else { + /* Not enough width available for the last character. Output + space(s) to fill. */ + while (max-- > 0) { + charstring_push_back (dest, ' '); + } + break; + } #else /* MULTIBYE_SUPPORT */ charstring_push_back (dest, *str++); --max; @@ -364,7 +374,7 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, { char *sp; char *savestr, *str; - char buffer[BUFSIZ], buffer2[BUFSIZ]; + char buffer[NMH_BUFSIZ], buffer2[NMH_BUFSIZ]; int i, c, rjust; int value; time_t t;