diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2019-01-21 12:46:45 -0500 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2019-01-21 12:46:45 -0500 |
| commit | 5279798a32ab2e36ec30aa99820f348ec6f591f4 (patch) | |
| tree | 35c20f89a714ea5180f26bea18a55cfb979d5303 /common/util.c | |
| parent | 6e5bfde14e9180824c623e820ac431cc75dee06d (diff) | |
Fix edge case bug in numlen, dropping use of math.h functions
(Specifically, numlen when called with INT_MIN gave an incorrect
result, because abs(INT_MIN) == INT_MIN < 0.)
Diffstat (limited to 'common/util.c')
| -rw-r--r-- | common/util.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/common/util.c b/common/util.c index 60f2f160..bd7bed2d 100644 --- a/common/util.c +++ b/common/util.c @@ -12,11 +12,12 @@ int wrap(int i, int max) { } int numlen(int n) { - if (n == 0) { - return 1; + int j = n <= 0 ? 1 : 0; + while (n) { + j++; + n /= 10; } - // Account for the '-' in negative numbers. - return log10(abs(n)) + (n > 0 ? 1 : 2); + return j; } uint32_t parse_color(const char *color) { |
