Merge
authordholmes
Mon, 09 Oct 2017 08:15:25 +0000
changeset 47605 54acb845133e
parent 47603 f5f98c9f1884 (current diff)
parent 47604 a5abbaac6165 (diff)
child 47606 660175b829e8
Merge
--- a/src/hotspot/os/posix/os_posix.cpp	Mon Oct 09 07:08:53 2017 +0000
+++ b/src/hotspot/os/posix/os_posix.cpp	Mon Oct 09 08:15:25 2017 +0000
@@ -1770,6 +1770,12 @@
 
   if (v == 0) { // Do this the hard way by blocking ...
     struct timespec abst;
+    // We have to watch for overflow when converting millis to nanos,
+    // but if millis is that large then we will end up limiting to
+    // MAX_SECS anyway, so just do that here.
+    if (millis / MILLIUNITS > MAX_SECS) {
+      millis = jlong(MAX_SECS) * MILLIUNITS;
+    }
     to_abstime(&abst, millis * (NANOUNITS / MILLIUNITS), false);
 
     int ret = OS_TIMEOUT;