Alexandre Julliard : libwine: Work around the Mac OS dynamic loader support for PE files.
Alexandre Julliard
julliard at winehq.org
Thu Nov 29 10:31:28 CST 2007
Module: wine
Branch: master
Commit: 6475603985c511c29fd027079286bb99d60a6a4a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=6475603985c511c29fd027079286bb99d60a6a4a
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Nov 29 15:32:49 2007 +0100
libwine: Work around the Mac OS dynamic loader support for PE files.
---
libs/wine/loader.c | 19 +++++++++++++++++++
1 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/libs/wine/loader.c b/libs/wine/loader.c
index 2f78248..13eb84a 100644
--- a/libs/wine/loader.c
+++ b/libs/wine/loader.c
@@ -668,6 +668,25 @@ void *wine_dlopen( const char *filename, int flag, char *error, size_t errorsize
#ifdef HAVE_DLOPEN
void *ret;
const char *s;
+
+#ifdef __APPLE__
+ /* the Mac OS loader pretends to be able to load PE files, so avoid them here */
+ unsigned char magic[2];
+ int fd = open( filename, O_RDONLY );
+ if (fd != -1)
+ {
+ if (pread( fd, magic, 2, 0 ) == 2 && magic[0] == 'M' && magic[1] == 'Z')
+ {
+ static const char msg[] = "MZ format";
+ size_t len = min( errorsize, sizeof(msg) );
+ memcpy( error, msg, len );
+ error[len - 1] = 0;
+ close( fd );
+ return NULL;
+ }
+ close( fd );
+ }
+#endif
dlerror(); dlerror();
#ifdef __sun
if (strchr( filename, ':' ))
More information about the wine-cvs
mailing list