diff --git a/src/libCom/osi/os/WIN32/osdThread.c b/src/libCom/osi/os/WIN32/osdThread.c index 841e7789c..e957d96b6 100644 --- a/src/libCom/osi/os/WIN32/osdThread.c +++ b/src/libCom/osi/os/WIN32/osdThread.c @@ -481,8 +481,18 @@ epicsShareFunc int epicsShareAPI epicsThreadIsSuspended (epicsThreadId id) epicsShareFunc void epicsShareAPI epicsThreadSleep (double seconds) { static const double mSecPerSec = 1000; - DWORD milliSecDelay = (DWORD) ( (seconds * mSecPerSec) + 0.5 ); - Sleep (milliSecDelay); + DWORD milliSecDelay; + + if ( seconds >= INFINITE / mSecPerSec ) { + milliSecDelay = INFINITE - 1; + } + else if ( seconds < 0.0 ) { + milliSecDelay = 0u; + } + else { + milliSecDelay = ( DWORD ) ( ( seconds * mSecPerSec ) + 0.5 ); + } + Sleep ( milliSecDelay ); } /*