From 68f40981a3a5a8b311713a13fcd3598519ede703 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Tue, 1 May 2001 17:01:50 +0000 Subject: [PATCH] detect overrange in sleep --- src/libCom/osi/os/WIN32/osdThread.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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 ); } /*