X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata-out.c;h=ae322bce59953ddc9ebbf69a6a1be4f813e8e8ce;hb=1a5f49c70a1bdc19d0c12a617d54013aa7118b4a;hp=5fce84f6c433b1075db40d5af774ec98eaedfca0;hpb=597dc92521dee8ba43334b9c5ca6a995aaae0ab8;p=pspp diff --git a/src/data-out.c b/src/data-out.c index 5fce84f6c4..ae322bce59 100644 --- a/src/data-out.c +++ b/src/data-out.c @@ -1042,7 +1042,7 @@ try_F (char *dst, const struct fmt_spec *fp, double number) /* There are no decimal places, so there's no way that the value can be shortened. Either it fits or it doesn't. */ - char buf[40]; + char buf[41]; sprintf (buf, "%*.0f", fp->w, number); if (strlen (buf) <= fp->w) { @@ -1116,6 +1116,7 @@ format_and_round (char *dst, double number, const struct fmt_spec *fp, sprintf (buf, "%.*f", decimals, number); + /* Omit integer part if it's 0. */ if (!memcmp (buf, "0.", 2)) memmove (buf, buf + 1, strlen (buf)); else if (!memcmp (buf, "-0.", 3)) @@ -1215,6 +1216,10 @@ format_and_round (char *dst, double number, const struct fmt_spec *fp, } } + /* Omit `-' if value output is zero. */ + if (buf[0] == '-' && buf[strspn (buf, "-.0")] == '\0') + memmove (buf, buf + 1, strlen (buf)); + buf_copy_str_lpad (dst, fp->w, buf); return 1; }