summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/fitz/printf.c23
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]);
}