diff options
-rw-r--r-- | source/fitz/printf.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/source/fitz/printf.c b/source/fitz/printf.c index 30cf85fb..3fe8c7e4 100644 --- a/source/fitz/printf.c +++ b/source/fitz/printf.c @@ -93,10 +93,16 @@ static void fmtuint32(struct fmtbuf *out, unsigned int a, int s, int z, int w, i buf[i++] = fz_hex_digits[a % base]; a /= base; } - while (i < w) - buf[i++] = z; + if (z == '0') + while (i < w - !!s) + buf[i++] = z; if (s) buf[i++] = s; + while (i < w) + buf[i++] = z; + if (z == ' ') + while (i < w) + buf[i++] = z; while (i > 0) fmtputc(out, buf[--i]); } @@ -113,10 +119,19 @@ static void fmtuint64(struct fmtbuf *out, uint64_t a, int s, int z, int w, int b buf[i++] = fz_hex_digits[a % base]; a /= base; } - while (i < w) - buf[i++] = z; + if (z == '0') + while (i < w - !!s) + buf[i++] = z; if (s) + { buf[i++] = s; + w += 1; + } + while (i < w) + buf[i++] = z; + if (z == ' ') + while (i < w) + buf[i++] = z; while (i > 0) fmtputc(out, buf[--i]); } |