diff options
Diffstat (limited to 'cpp/src/IceUtil/Cond.cpp')
-rw-r--r-- | cpp/src/IceUtil/Cond.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/cpp/src/IceUtil/Cond.cpp b/cpp/src/IceUtil/Cond.cpp index f1c24099eb8..d1c00138839 100644 --- a/cpp/src/IceUtil/Cond.cpp +++ b/cpp/src/IceUtil/Cond.cpp @@ -42,7 +42,13 @@ IceUtil::Semaphore::wait() const bool IceUtil::Semaphore::timedWait(const Time& timeout) const { - int rc = WaitForSingleObject(_sem, static_cast<long>(timeout.toMilliSeconds())); + Int64 msTimeout = timeout.toMilliSeconds(); + if(msTimeout < 0 || msTimeout > 0x7FFFFFFF) + { + throw InvalidTimeoutException(__FILE__, __LINE__, timeout); + } + + int rc = WaitForSingleObject(_sem, static_cast<DWORD>(msTimeout)); if(rc != WAIT_TIMEOUT && rc != WAIT_OBJECT_0) { throw ThreadSyscallException(__FILE__, __LINE__, GetLastError()); @@ -50,7 +56,6 @@ IceUtil::Semaphore::timedWait(const Time& timeout) const return rc != WAIT_TIMEOUT; } - void IceUtil::Semaphore::post(int count) const { |