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