diff --git a/rts/posix/OSThreads.c b/rts/posix/OSThreads.c
index e5cf9e6d6ae981f38ad66f3144ed5c6b5aa65210..6c09f86c7fc71812d2dc096137656738cf06079e 100644
--- a/rts/posix/OSThreads.c
+++ b/rts/posix/OSThreads.c
@@ -380,8 +380,9 @@ interruptOSThread (OSThreadId id)
 void
 joinOSThread (OSThreadId id)
 {
-    if (pthread_join(id, NULL) != 0) {
-        sysErrorBelch("joinOSThread: error %d", errno);
+    int ret = pthread_join(id, NULL);
+    if (ret != 0) {
+        sysErrorBelch("joinOSThread: error %d", ret);
     }
 }