diff options
author | ZeroC Staff <git@zeroc.com> | 2007-12-18 12:43:45 -0500 |
---|---|---|
committer | ZeroC Staff <git@zeroc.com> | 2007-12-18 12:43:45 -0500 |
commit | 41b6ef772bdf2fa6724cfbf2d71acdb866140eac (patch) | |
tree | 33284f1fee522dac6f463034ae52d56ac97114db /cpp/src/IceUtil/Cond.cpp | |
parent | changing version of Berkeley DB (diff) | |
download | ice-41b6ef772bdf2fa6724cfbf2d71acdb866140eac.tar.bz2 ice-41b6ef772bdf2fa6724cfbf2d71acdb866140eac.tar.xz ice-41b6ef772bdf2fa6724cfbf2d71acdb866140eac.zip |
Fixed bug #2277
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 { |