summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygserver/sysv_msg.cc6
-rw-r--r--winsup/cygserver/sysv_sem.cc3
2 files changed, 6 insertions, 3 deletions
diff --git a/winsup/cygserver/sysv_msg.cc b/winsup/cygserver/sysv_msg.cc
index 217cc1d97..9e90d05a9 100644
--- a/winsup/cygserver/sysv_msg.cc
+++ b/winsup/cygserver/sysv_msg.cc
@@ -733,7 +733,8 @@ msgsnd(struct thread *td, struct msgsnd_args *uap)
if (error != 0) {
DPRINTF(("msgsnd: interrupted system call\n"));
#ifdef __CYGWIN__
- if (error != EIDRM)
+ if (error == EIDRM)
+ goto done2;
#endif /* __CYGWIN__ */
error = EINTR;
goto done2;
@@ -1089,7 +1090,8 @@ msgrcv(struct thread *td, struct msgrcv_args *uap)
if (error != 0) {
DPRINTF(("msgrcv: interrupted system call\n"));
#ifdef __CYGWIN__
- if (error != EIDRM)
+ if (error == EIDRM)
+ goto done2;
#endif /* __CYGWIN__ */
error = EINTR;
goto done2;
diff --git a/winsup/cygserver/sysv_sem.cc b/winsup/cygserver/sysv_sem.cc
index e7ba48b61..349322c6d 100644
--- a/winsup/cygserver/sysv_sem.cc
+++ b/winsup/cygserver/sysv_sem.cc
@@ -1177,7 +1177,8 @@ semop(struct thread *td, struct semop_args *uap)
*/
if (error != 0) {
#ifdef __CYGWIN__
- if (error != EIDRM)
+ if (error == EIDRM)
+ goto done2;
#endif /* __CYGWIN__ */
error = EINTR;
goto done2;