From 87ef16d3c1de7f6eb2b9ec4883e0ae62771c9a63 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Mon, 4 Jan 2016 12:12:57 +0100 Subject: Change fz_ftoa to fz_grisu to remove one extra layer of function calls. --- source/fitz/printf.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'source/fitz/printf.c') 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, '.'); -- cgit v1.2.3