From 5473f283f501ff9f5e38e89d3a2e89f738a7e76f Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Mon, 22 Aug 2011 09:04:48 -0400
Subject: [PATCH] Properly call strerror() in thread test;  add comments.

---
 src/test/thread/thread_test.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/test/thread/thread_test.c b/src/test/thread/thread_test.c
index 6fef840d528..736466c6b2a 100644
--- a/src/test/thread/thread_test.c
+++ b/src/test/thread/thread_test.c
@@ -157,7 +157,7 @@ main(int argc, char *argv[])
 	if (rc != 0)
 	{
 		fprintf(stderr, "Failed to create thread 1: %s **\nexiting\n",
-				strerror(rc));
+				strerror(errno));
 		exit(1);
 	}
 	rc = pthread_create(&thread2, NULL, (void *(*) (void *)) func_call_2, NULL);
@@ -285,6 +285,11 @@ func_call_1(void)
 	/* Set errno = EEXIST */
 
 	/* create, then try to fail on exclusive create open */
+	/*
+	 * It would be great to check errno here but if errno is not thread-safe
+	 * we might get a value from the other thread and mis-report the cause
+	 * of the failure.
+	 */
 #ifdef WIN32
 	if ((h1 = CreateFile(TEMP_FILENAME_1, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, 0, NULL)) ==
 		INVALID_HANDLE_VALUE)
@@ -299,7 +304,7 @@ func_call_1(void)
 	
 #ifdef WIN32
 	if (CreateFile(TEMP_FILENAME_1, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL)
-		!= INVALID_HANDLE_VALUE || GetLastError() != ERROR_FILE_EXISTS)
+		!= INVALID_HANDLE_VALUE)
 #else
 	if (open(TEMP_FILENAME_1, O_RDWR | O_CREAT | O_EXCL, 0600) >= 0)
 #endif
-- 
GitLab