summaryrefslogtreecommitdiff
path: root/cpp/src/IceUtil/CtrlCHandler.cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2003-06-02 18:03:38 +0000
committerBernard Normier <bernard@zeroc.com>2003-06-02 18:03:38 +0000
commite1d353c76161651ffc4db678ff4bbe31f87e967d (patch)
treebb45cb2977c11a95453ebc66ab26a20e436b0c5b /cpp/src/IceUtil/CtrlCHandler.cpp
parentMapping change for Ice::Byte from char to unsigned char -- Windows-specific (diff)
downloadice-e1d353c76161651ffc4db678ff4bbe31f87e967d.tar.bz2
ice-e1d353c76161651ffc4db678ff4bbe31f87e967d.tar.xz
ice-e1d353c76161651ffc4db678ff4bbe31f87e967d.zip
Merged from R1_1_branch
Diffstat (limited to 'cpp/src/IceUtil/CtrlCHandler.cpp')
-rw-r--r--cpp/src/IceUtil/CtrlCHandler.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/cpp/src/IceUtil/CtrlCHandler.cpp b/cpp/src/IceUtil/CtrlCHandler.cpp
index 9c7c53220dc..d77dd20744d 100644
--- a/cpp/src/IceUtil/CtrlCHandler.cpp
+++ b/cpp/src/IceUtil/CtrlCHandler.cpp
@@ -130,6 +130,14 @@ sigwaitThread(void*)
{
int signal = 0;
int rc = sigwait(&ctrlCLikeSignals, &signal);
+ //
+ // Some sigwait() implementations incorrectly return EINTR
+ // when interrupted by an unblocked caught signal
+ //
+ if(rc == EINTR)
+ {
+ continue;
+ }
assert(rc == 0);
rc = pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, 0);