fix bug with insertion of newline being wrong if the num function was used at
[mmh] / sbr / fmt_scan.c
index c049ad4..b27f7c6 100644 (file)
@@ -342,8 +342,12 @@ fmt_scan (struct format *format, char *scanl, int width, int *dat)
            adios (NULL, "internal error (FT_STRFW)");
 
        case FT_NUM:
-           n = snprintf(cp, ep - cp, "%d", value);
-           if (n >= 0) cp += n;
+           n = snprintf(cp, ep - cp + 1, "%d", value);
+           if (n >= 0)
+               if (n >= ep - cp) {
+                   cp = ep;
+               } else
+                   cp += n;
            break;
        case FT_NUMF:
            cpnumber (&cp, value, fmt->f_width, fmt->f_fill, ep - cp);