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.)
This commit is contained in:
parent
d7ff776552
commit
c040defd5f
|
@ -12,11 +12,12 @@ int wrap(int i, int max) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int numlen(int n) {
|
int numlen(int n) {
|
||||||
if (n == 0) {
|
int j = n <= 0 ? 1 : 0;
|
||||||
return 1;
|
while (n) {
|
||||||
|
j++;
|
||||||
|
n /= 10;
|
||||||
}
|
}
|
||||||
// Account for the '-' in negative numbers.
|
return j;
|
||||||
return log10(abs(n)) + (n > 0 ? 1 : 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t parse_color(const char *color) {
|
uint32_t parse_color(const char *color) {
|
||||||
|
|
Loading…
Reference in a new issue