From: Johannes Schindelin Date: Thu, 13 Jun 2019 11:49:47 +0000 (-0700) Subject: config: avoid calling `labs()` on too-large data type X-Git-Tag: v2.23.0-rc0~72^2 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/9dae4fe79f85dd0eaf41215bea76c68b65398fbc?ds=sidebyside config: avoid calling `labs()` on too-large data type The `labs()` function operates, as the initial `l` suggests, on `long` parameters. However, in `config.c` we tried to use it on values of type `intmax_t`. This problem was found by GCC v9.x. To fix it, let's just "unroll" the function (i.e. negate the value if it is negative). Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- diff --git a/config.c b/config.c index 296a6d9cc4..01c6e9df23 100644 --- a/config.c +++ b/config.c @@ -869,9 +869,9 @@ static int git_parse_signed(const char *value, intmax_t *ret, intmax_t max) errno = EINVAL; return 0; } - uval = labs(val); + uval = val < 0 ? -val : val; uval *= factor; - if (uval > max || labs(val) > uval) { + if (uval > max || (val < 0 ? -val : val) > uval) { errno = ERANGE; return 0; }