# HG changeset patch # User asl # Date 1150482076 0 # Node ID e11e2c73b1b2942281bd977d71803a96df980fc6 # Parent 6d4ac428ab516d11b29dc1124c40116b8f79a893 * src/time.cxx: (nanosleep): Fixed to return EINTR when it is interrupted by a signal. This in turn fixed sleep() to return the number of unelapsed seconds when interrupted by a signal. diff --git a/packages/compat/posix/current/ChangeLog b/packages/compat/posix/current/ChangeLog --- a/packages/compat/posix/current/ChangeLog +++ b/packages/compat/posix/current/ChangeLog @@ -1,3 +1,9 @@ +2006-06-13 Dan Jakubiec + + * src/time.cxx: (nanosleep): Fixed to return EINTR when it is + interrupted by a signal. This in turn fixed sleep() to return the + number of unelapsed seconds when interrupted by a signal. + 2006-06-12 Klaas Gadeyne * src/pthread.cxx (pthread_create): name is only defined if diff --git a/packages/compat/posix/current/src/time.cxx b/packages/compat/posix/current/src/time.cxx --- a/packages/compat/posix/current/src/time.cxx +++ b/packages/compat/posix/current/src/time.cxx @@ -665,6 +665,11 @@ externC int nanosleep( const struct time ticks -= (now-then); cyg_ticks_to_timespec( ticks, rmtp ); + + // Check for cancellation and then notify the caller that we + // were interrupted. + PTHREAD_TESTCANCEL(); + TIME_RETURN(EINTR); } // check if we were woken up because we were cancelled.