diff --git a/libs/wine/loader.c b/libs/wine/loader.c index 4a089eef3b7..a86da98b921 100644 --- a/libs/wine/loader.c +++ b/libs/wine/loader.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -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)