summaryrefslogtreecommitdiff
path: root/source/fitz/printf.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/fitz/printf.c')
-rw-r--r--source/fitz/printf.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/source/fitz/printf.c b/source/fitz/printf.c
index dcc89952..baa1aa3a 100644
--- a/source/fitz/printf.c
+++ b/source/fitz/printf.c
@@ -23,17 +23,23 @@ static void fmtputc(struct fmtbuf *out, int c)
static void fmtfloat(struct fmtbuf *out, float f)
{
char digits[40], *s = digits;
- int exp, neg, ndigits, point;
+ int exp, ndigits, point;
if (isnan(f)) f = 0;
if (isinf(f)) f = f < 0 ? -FLT_MAX : FLT_MAX;
- fz_ftoa(f, digits, &exp, &neg, &ndigits);
- point = exp + ndigits;
-
- if (neg)
+ if (signbit(f))
fmtputc(out, '-');
+ if (f == 0)
+ {
+ fmtputc(out, '0');
+ return;
+ }
+
+ ndigits = fz_grisu(f, digits, &exp);
+ point = exp + ndigits;
+
if (point <= 0)
{
fmtputc(out, '.');