diff --git a/src/xpdev/semwrap.c b/src/xpdev/semwrap.c
index c895c84de230e3dd57866b827db7bd96ba011fde..f86617926b16038e6a58ffaf95ee0999898707f3 100644
--- a/src/xpdev/semwrap.c
+++ b/src/xpdev/semwrap.c
@@ -54,7 +54,8 @@ sem_trywait_block(sem_t *sem, unsigned long timeout)
 	abstime.tv_sec=currtime.tv_sec + (currtime.tv_usec/1000 + timeout)/1000;
 	abstime.tv_nsec=(currtime.tv_usec*1000 + timeout*1000000)%1000000000;
 
-	if((retval=sem_timedwait(sem, &abstime)) && errno==ETIMEDOUT)
+	retval=sem_timedwait(sem, &abstime);
+	if(retval==ETIMEDOUT)
 		errno=EAGAIN;
 	return retval;
 }