]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
pthread_cond_timedwait: be robust to timeout points in the past
authorJulian Seward <jseward@acm.org>
Wed, 29 May 2002 20:13:53 +0000 (20:13 +0000)
committerJulian Seward <jseward@acm.org>
Wed, 29 May 2002 20:13:53 +0000 (20:13 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@334

coregrind/arch/x86-linux/vg_libpthread.c
coregrind/vg_libpthread.c
vg_libpthread.c

index 8d5ef2f368dad6c059c684792f0ac5ed6d75434b..2cdc5ce98c3bccd0635abc0443bebcb9d9c58394 100644 (file)
@@ -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 */,
index 8d5ef2f368dad6c059c684792f0ac5ed6d75434b..2cdc5ce98c3bccd0635abc0443bebcb9d9c58394 100644 (file)
@@ -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 */,
index 8d5ef2f368dad6c059c684792f0ac5ed6d75434b..2cdc5ce98c3bccd0635abc0443bebcb9d9c58394 100644 (file)
@@ -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 */,