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;