Merge branch 'jk/decimal-width-for-uintmax'
authorJunio C Hamano <gitster@pobox.com>
Wed, 18 Feb 2015 19:45:02 +0000 (11:45 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 18 Feb 2015 19:45:02 +0000 (11:45 -0800)
We didn't format an integer that wouldn't fit in "int" but in
"uintmax_t" correctly.

* jk/decimal-width-for-uintmax:
decimal_width: avoid integer overflow

cache.h
pager.c
diff --git a/cache.h b/cache.h
index f704af5df0984e092fe318e535596921c4ea7122..04951ddcbf7cf2cb61957568f8608b0fbbd9c9da 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -1498,7 +1498,7 @@ extern const char *pager_program;
 extern int pager_in_use(void);
 extern int pager_use_color;
 extern int term_columns(void);
-extern int decimal_width(int);
+extern int decimal_width(uintmax_t);
 extern int check_pager_config(const char *cmd);
 
 extern const char *editor_program;
diff --git a/pager.c b/pager.c
index f6e8c331924496ca6656cd05d7de6497310502ab..98b26823c9e0c0bd220a7a41a97675626c8e65ec 100644 (file)
--- a/pager.c
+++ b/pager.c
@@ -133,12 +133,12 @@ int term_columns(void)
 /*
  * How many columns do we need to show this number in decimal?
  */
-int decimal_width(int number)
+int decimal_width(uintmax_t number)
 {
-       int i, width;
+       int width;
 
-       for (width = 1, i = 10; i <= number; width++)
-               i *= 10;
+       for (width = 1; number >= 10; width++)
+               number /= 10;
        return width;
 }