From 49ef722321e9fef7cece5f0980396344e3c0eb0a Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Sat, 15 Feb 2003 22:40:57 +0000
Subject: [PATCH] Use realpath_r for FreeBSD builds... appears to fail on rare
 occasions in release builds.

---
 src/xpdev/dirwrap.h    | 5 +++--
 src/xpdev/threadwrap.c | 3 ++-
 src/xpdev/threadwrap.h | 2 +-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/xpdev/dirwrap.h b/src/xpdev/dirwrap.h
index c3c4e9f578..b7a8be094c 100644
--- a/src/xpdev/dirwrap.h
+++ b/src/xpdev/dirwrap.h
@@ -61,8 +61,9 @@ extern "C" {
 	#include <glob.h>		/* POSIX.2 directory pattern matching function */
 	#define MKDIR(dir)		mkdir(dir,0777)
 
-	#if defined(__OpenBSD__) && defined(_THREADWRAP_H)
-		/* realpath() not threadsafe on OpenBSD */
+	#if defined(BSD) && defined(_THREADWRAP_H)
+		/* realpath() not threadsafe on OpenBSD -or- FreeBSD */
+		/* (On FreeBSD it only fails in release builds!		 */
 	    #define FULLPATH(a,r,l) realpath_r(r,a)	/* defined in threadwrap.c */
 	#else
 		#define FULLPATH(a,r,l)	realpath(r,a)
diff --git a/src/xpdev/threadwrap.c b/src/xpdev/threadwrap.c
index 7f8f41fff9..d43b33acac 100644
--- a/src/xpdev/threadwrap.c
+++ b/src/xpdev/threadwrap.c
@@ -84,8 +84,9 @@ ulong _beginthread(void( *start_address )( void * )
 
 /****************************************************************************/
 /* Thread-safe (reentrant) version of realpath() - required for OpenBSD		*/
+/* And for NON-DEBUG FreeBSD builds (on 4.7 anyways)						*/
 /****************************************************************************/
-#if defined(__OpenBSD__)
+#if defined(BSD)
 char* realpath_r(const char *pathname, char *resolvedname)  
 {
     static pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
diff --git a/src/xpdev/threadwrap.h b/src/xpdev/threadwrap.h
index a72f5b0cbc..a98c9f0809 100644
--- a/src/xpdev/threadwrap.h
+++ b/src/xpdev/threadwrap.h
@@ -56,7 +56,7 @@ extern "C" {
 	ulong _beginthread(void( *start_address )( void * )
 		,unsigned stack_size, void *arglist);
 
-	#if defined(__OpenBSD__)	/* thread-safe version of realpath for OpenBSD */
+	#if defined(BSD)	/* thread-safe version of realpath for BSD */
 		char* realpath_r(const char *pathname, char *resolvedname);
 	#endif
 
-- 
GitLab