diff options
author | Jose <jose@zeroc.com> | 2015-02-10 16:12:42 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2015-02-10 16:12:42 +0100 |
commit | 5d20f8d730c593c75be0bd0057c74deb6672c0f3 (patch) | |
tree | 9589e9f87c94c7a597a5dfc3d6e3cd77e190882c /cpp/src/IceUtil/Thread.cpp | |
parent | Removed IceDiscovery from android, UDP multicast isn't supported (diff) | |
download | ice-5d20f8d730c593c75be0bd0057c74deb6672c0f3.tar.bz2 ice-5d20f8d730c593c75be0bd0057c74deb6672c0f3.tar.xz ice-5d20f8d730c593c75be0bd0057c74deb6672c0f3.zip |
Fixed (ICE-5975) - Improve IceUtil::ThreadControl::sleep and wait primitives to better handle negative values
Diffstat (limited to 'cpp/src/IceUtil/Thread.cpp')
-rw-r--r-- | cpp/src/IceUtil/Thread.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/cpp/src/IceUtil/Thread.cpp b/cpp/src/IceUtil/Thread.cpp index e428d877162..89b49ec71c7 100644 --- a/cpp/src/IceUtil/Thread.cpp +++ b/cpp/src/IceUtil/Thread.cpp @@ -103,6 +103,11 @@ IceUtil::ThreadControl::id() const void IceUtil::ThreadControl::sleep(const Time& timeout) { + IceUtil::Int64 msTimeout = timeout.toMilliSeconds(); + if(msTimeout < 0 || msTimeout > 0x7FFFFFFF) + { + throw IceUtil::InvalidTimeoutException(__FILE__, __LINE__, timeout); + } this_thread::sleep_for(chrono::microseconds(timeout.toMicroSeconds())); } @@ -330,6 +335,11 @@ IceUtil::ThreadControl::id() const void IceUtil::ThreadControl::sleep(const Time& timeout) { + IceUtil::Int64 msTimeout = timeout.toMilliSeconds(); + if(msTimeout < 0 || msTimeout > 0x7FFFFFFF) + { + throw IceUtil::InvalidTimeoutException(__FILE__, __LINE__, timeout); + } Sleep(static_cast<long>(timeout.toMilliSeconds())); } @@ -590,6 +600,11 @@ IceUtil::ThreadControl::id() const void IceUtil::ThreadControl::sleep(const Time& timeout) { + IceUtil::Int64 msTimeout = timeout.toMilliSeconds(); + if(msTimeout < 0 || msTimeout > 0x7FFFFFFF) + { + throw IceUtil::InvalidTimeoutException(__FILE__, __LINE__, timeout); + } struct timeval tv = timeout; struct timespec ts; ts.tv_sec = tv.tv_sec; |