From: Rémi Bernon rbernon@codeweavers.com
--- loader/main.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/loader/main.c b/loader/main.c index 242ff15accd..d1919c987da 100644 --- a/loader/main.c +++ b/loader/main.c @@ -175,17 +175,21 @@ static void *load_ntdll( char *argv0 ) */ int main( int argc, char *argv[] ) { + void (*__wine_main)(int, char **, char **); void *handle;
- if ((handle = load_ntdll( argv[0] ))) + if (!(handle = load_ntdll( argv[0] ))) + { + fprintf( stderr, "wine: could not load ntdll.so: %s\n", dlerror() ); + pthread_detach( pthread_self() ); /* force importing libpthread for OpenGL */ + exit(1); + } + + if (!(__wine_main = dlsym( handle, "__wine_main" ))) { - void (*init_func)(int, char **, char **) = dlsym( handle, "__wine_main" ); - if (init_func) init_func( argc, argv, environ ); fprintf( stderr, "wine: __wine_main function not found in ntdll.so\n" ); exit(1); }
- fprintf( stderr, "wine: could not load ntdll.so: %s\n", dlerror() ); - pthread_detach( pthread_self() ); /* force importing libpthread for OpenGL */ - exit(1); + __wine_main( argc, argv, environ ); }