Mercurial > hg > octave-nkf > gnulib-hg
changeset 15324:04f6eb9c0c53
nanosleep: fix integer overflow problem
* lib/nanosleep.c (my_usleep): Don't assume signed integer
arithmetic wraps around on overflow.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Sat, 25 Jun 2011 14:23:56 -0700 |
parents | b4b10d174a9d |
children | 9c73c1ba1864 |
files | ChangeLog lib/nanosleep.c |
diffstat | 2 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2011-06-25 Paul Eggert <eggert@cs.ucla.edu> + nanosleep: fix integer overflow problem + * lib/nanosleep.c (my_usleep): Don't assume signed integer + arithmetic wraps around on overflow. + nanosleep: simplify carrying * lib/nanosleep.c (nanosleep): Use the requested tv_nsec for the first call to the underyling nanosleep, not for the last one.
--- a/lib/nanosleep.c +++ b/lib/nanosleep.c @@ -210,12 +210,11 @@ tv_delay.tv_usec = (ts_delay->tv_nsec + 999) / 1000; if (tv_delay.tv_usec == 1000000) { - time_t t1 = tv_delay.tv_sec + 1; - if (t1 < tv_delay.tv_sec) + if (tv_delay.tv_sec == TYPE_MAXIMUM (time_t)) tv_delay.tv_usec = 1000000 - 1; /* close enough */ else { - tv_delay.tv_sec = t1; + tv_delay.tv_sec++; tv_delay.tv_usec = 0; } }