From f2154fec358d81d0674b98128bcde563165c8bb5 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Thu, 21 Dec 2006 16:47:56 +0000 Subject: [PATCH] Fix for Mantis #254. --- src/libCom/osi/os/vxWorks/osdEvent.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libCom/osi/os/vxWorks/osdEvent.c b/src/libCom/osi/os/vxWorks/osdEvent.c index 8fe02cd4f..4d52d9575 100644 --- a/src/libCom/osi/os/vxWorks/osdEvent.c +++ b/src/libCom/osi/os/vxWorks/osdEvent.c @@ -16,6 +16,8 @@ #include #include #include +#include + /* The following not defined in an vxWorks header */ int sysClkRateGet(void); @@ -42,14 +44,17 @@ void epicsEventDestroy(epicsEventId id) epicsEventWaitStatus epicsEventWaitWithTimeout( epicsEventId id, double timeOut) { + int rate = sysClkRateGet(); int status; int ticks; - if(timeOut<=0.0) { + if (timeOut <= 0.0) { ticks = 0; + } else if (timeOut >= (double) INT_MAX / rate) { + ticks = WAIT_FOREVER; } else { - ticks = timeOut*sysClkRateGet(); - if(ticks<=0) ticks = 1; + ticks = timeOut * rate; + if (ticks<=0) ticks = 1; } status = semTake((SEM_ID)id,ticks); if(status==OK) return(epicsEventWaitOK);