Module: wine Branch: master Commit: f3960b22b12db14530191880e5153d5bad6ac4fc URL: http://source.winehq.org/git/wine.git/?a=commit;h=f3960b22b12db14530191880e5...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Mar 30 12:17:01 2007 +0200
libwine: Hack to work around the Solaris dlopen() brain damage.
---
libs/wine/loader.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/libs/wine/loader.c b/libs/wine/loader.c index 4a089ee..a86da98 100644 --- a/libs/wine/loader.c +++ b/libs/wine/loader.c @@ -24,6 +24,7 @@ #include <assert.h> #include <ctype.h> #include <fcntl.h> +#include <limits.h> #include <stdarg.h> #include <stdlib.h> #include <string.h> @@ -689,6 +690,16 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize void *ret; const char *s; dlerror(); dlerror(); +#ifdef __sun + if (strchr( filename, ':' )) + { + char path[PATH_MAX]; + /* Solaris' brain damaged dlopen() treats ':' as a path separator */ + realpath( filename, path ); + ret = dlopen( path, flag | RTLD_FIRST ); + } + else +#endif ret = dlopen( filename, flag | RTLD_FIRST ); s = dlerror(); if (error && errorsize)