diff --git a/src/xpdev/dirwrap.h b/src/xpdev/dirwrap.h index c3c4e9f578a0ca24b7076e6b7e8f557f7e4779f0..b7a8be094c2441854800c8538e7a2f1f0422ab59 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 7f8f41fff9d26ec7b1b88c475b0c20f9301fc75a..d43b33acac3045171e175b46b04855dac881f6d2 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 a72f5b0cbc65b6eb0347fa27e7e4bb12cfb483f1..a98c9f0809be60e1656aae8a54d644881e502492 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