From: Bruno Haible Date: Sun, 23 Apr 2017 17:09:32 +0000 (+0200) Subject: nap.h: Fix logic. X-Git-Tag: v1.0~6244 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=5f72078b9b273a1d2acd9151ef34e117b1019660;p=gnulib.git nap.h: Fix logic. * tests/nap.h (nap): Avoid signed integer overflow in loop. --- diff --git a/ChangeLog b/ChangeLog index 4661d2575b..bde4ac7dd2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-04-23 Bruno Haible + + nap.h: Fix logic. + * tests/nap.h (nap): Avoid signed integer overflow in loop. + 2017-04-23 Bruno Haible Fix conflict between strerror_r-posix module and AC_FUNC_STRERROR_R. diff --git a/tests/nap.h b/tests/nap.h index b2726d7c71..ce8f95a5e5 100644 --- a/tests/nap.h +++ b/tests/nap.h @@ -117,9 +117,18 @@ nap (void) delay = delay / 2; /* Try half of the previous delay. */ ASSERT (0 < delay); - for ( ; delay <= 2147483647; delay = delay * 2) - if (nap_works (nap_fd, delay, old_st)) - return; + for (;;) + { + if (nap_works (delay, old_st)) + return; + if (delay <= (2147483647 - 1) / 2) + { + delay = delay * 2 + 1; + continue; + } + else + break; + } /* Bummer: even the highest nap delay didn't work. */ ASSERT (0);