produce something seeming to workaround https://bugs.launchpad.net/ubuntu/+source...
[alioth/cvs.git] / src / subr.c
index 4c73fe2..39a98e7 100644 (file)
@@ -807,6 +807,8 @@ sleep_past (time_t desttime)
     long s;
     long us;
 
+    if (time (&t) > desttime) return;
+
     while (time (&t) <= desttime)
     {
 #ifdef HAVE_GETTIMEOFDAY
@@ -835,6 +837,14 @@ sleep_past (time_t desttime)
            (void)nanosleep (&ts, NULL);
        }
     }
+
+    /* sleep another 20 ms (2 HZ) to avoid races */
+    {
+        struct timespec ts;
+        ts.tv_sec = s;
+        ts.tv_nsec = us * 1000;
+        (void)nanosleep (&ts, NULL);
+    }
 }