summaryrefslogtreecommitdiff
path: root/cpp/src/IceUtil/Cond.cpp
diff options
context:
space:
mode:
authorZeroC Staff <git@zeroc.com>2007-12-18 12:43:45 -0500
committerZeroC Staff <git@zeroc.com>2007-12-18 12:43:45 -0500
commit41b6ef772bdf2fa6724cfbf2d71acdb866140eac (patch)
tree33284f1fee522dac6f463034ae52d56ac97114db /cpp/src/IceUtil/Cond.cpp
parentchanging version of Berkeley DB (diff)
downloadice-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.cpp9
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
{