[PATCH 6/6] strbuf_humanise: use unsigned variables
- From
Jeff King <peff@peff.net>
- Date
- Jul 24, 2018, 10:52 UTC
- Message-ID
- <20180724105229.GF17165@sigill.intra.peff.net>
- In-Reply-To
- <20180724104852.GA14638@sigill.intra.peff.net>
All of the numeric formatting done by this function uses "%u", but we pass in a signed "int". The actual range doesn't matter here, since the conditional makes sure we're always showing reasonably small numbers. And even gcc's format-checker does not seem to mind. But it's potentially confusing to a reader of the code to see the mismatch.
Signed-off-by: Jeff King <peff@peff.net> --- strbuf.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/strbuf.c b/strbuf.c index db9069c937..54f29bbb23 100644 --- a/strbuf.c +++ b/strbuf.c @@ -734,18 +734,18 @@ void strbuf_humanise_bytes(struct strbuf *buf, off_t bytes) { if (bytes > 1 << 30) { strbuf_addf(buf, "%u.%2.2u GiB", - (int)(bytes >> 30), - (int)(bytes & ((1 << 30) - 1)) / 10737419); + (unsigned)(bytes >> 30), + (unsigned)(bytes & ((1 << 30) - 1)) / 10737419); } else if (bytes > 1 << 20) { - int x = bytes + 5243; /* for rounding */ + unsigned x = bytes + 5243; /* for rounding */ strbuf_addf(buf, "%u.%2.2u MiB", x >> 20, ((x & ((1 << 20) - 1)) * 100) >> 20); } else if (bytes > 1 << 10) { - int x = bytes + 5; /* for rounding */ + unsigned x = bytes + 5; /* for rounding */ strbuf_addf(buf, "%u.%2.2u KiB", x >> 10, ((x & ((1 << 10) - 1)) * 100) >> 10); } else { - strbuf_addf(buf, "%u bytes", (int)bytes); + strbuf_addf(buf, "%u bytes", (unsigned)bytes); } }
-- 2.18.0.542.g2bf2fc4f7e