From: Julian Seward Date: Wed, 29 May 2002 20:13:53 +0000 (+0000) Subject: pthread_cond_timedwait: be robust to timeout points in the past X-Git-Tag: svn/VALGRIND_1_0_3~132 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=320e2adc3f734710a7f8f8e1d66b518ddf07b712;p=thirdparty%2Fvalgrind.git pthread_cond_timedwait: be robust to timeout points in the past git-svn-id: svn://svn.valgrind.org/valgrind/trunk@334 --- diff --git a/coregrind/arch/x86-linux/vg_libpthread.c b/coregrind/arch/x86-linux/vg_libpthread.c index 8d5ef2f368..2cdc5ce98c 100644 --- a/coregrind/arch/x86-linux/vg_libpthread.c +++ b/coregrind/arch/x86-linux/vg_libpthread.c @@ -798,7 +798,8 @@ int pthread_cond_timedwait ( pthread_cond_t *cond, ull_ms_end_after_1970 = 1000ULL * ((unsigned long long int)(abstime->tv_sec)) + ((unsigned long long int)(abstime->tv_nsec / 1000000)); - assert(ull_ms_end_after_1970 >= ull_ms_now_after_1970); + if (ull_ms_end_after_1970 < ull_ms_now_after_1970) + ull_ms_end_after_1970 = ull_ms_now_after_1970; ms_end = ms_now + (unsigned int)(ull_ms_end_after_1970 - ull_ms_now_after_1970); VALGRIND_MAGIC_SEQUENCE(res, 0 /* default */, diff --git a/coregrind/vg_libpthread.c b/coregrind/vg_libpthread.c index 8d5ef2f368..2cdc5ce98c 100644 --- a/coregrind/vg_libpthread.c +++ b/coregrind/vg_libpthread.c @@ -798,7 +798,8 @@ int pthread_cond_timedwait ( pthread_cond_t *cond, ull_ms_end_after_1970 = 1000ULL * ((unsigned long long int)(abstime->tv_sec)) + ((unsigned long long int)(abstime->tv_nsec / 1000000)); - assert(ull_ms_end_after_1970 >= ull_ms_now_after_1970); + if (ull_ms_end_after_1970 < ull_ms_now_after_1970) + ull_ms_end_after_1970 = ull_ms_now_after_1970; ms_end = ms_now + (unsigned int)(ull_ms_end_after_1970 - ull_ms_now_after_1970); VALGRIND_MAGIC_SEQUENCE(res, 0 /* default */, diff --git a/vg_libpthread.c b/vg_libpthread.c index 8d5ef2f368..2cdc5ce98c 100644 --- a/vg_libpthread.c +++ b/vg_libpthread.c @@ -798,7 +798,8 @@ int pthread_cond_timedwait ( pthread_cond_t *cond, ull_ms_end_after_1970 = 1000ULL * ((unsigned long long int)(abstime->tv_sec)) + ((unsigned long long int)(abstime->tv_nsec / 1000000)); - assert(ull_ms_end_after_1970 >= ull_ms_now_after_1970); + if (ull_ms_end_after_1970 < ull_ms_now_after_1970) + ull_ms_end_after_1970 = ull_ms_now_after_1970; ms_end = ms_now + (unsigned int)(ull_ms_end_after_1970 - ull_ms_now_after_1970); VALGRIND_MAGIC_SEQUENCE(res, 0 /* default */,