don't abort if a shared library can't be loaded under OS X, just return an error

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30119 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2004-10-27 13:53:37 +00:00
parent 0f4c414099
commit 48a611cf00

View File

@@ -99,22 +99,28 @@ const char *dlerror()
void *dlopen(const char *path, int WXUNUSED(mode) /* mode is ignored */) void *dlopen(const char *path, int WXUNUSED(mode) /* mode is ignored */)
{ {
int dyld_result;
NSObjectFileImage ofile; NSObjectFileImage ofile;
NSModule handle = NULL; NSModule handle = NULL;
dyld_result = NSCreateObjectFileImageFromFile(path, &ofile); int dyld_result = NSCreateObjectFileImageFromFile(path, &ofile);
if (dyld_result != NSObjectFileImageSuccess) if ( dyld_result != NSObjectFileImageSuccess )
{ {
TranslateError(path, dyld_result); handle = NULL;
} }
else else
{ {
// NSLinkModule will cause the run to abort on any link error's handle = NSLinkModule
// not very friendly but the error recovery functionality is limited. (
handle = NSLinkModule(ofile, path, NSLINKMODULE_OPTION_BINDNOW); ofile,
path,
NSLINKMODULE_OPTION_BINDNOW |
NSLINKMODULE_OPTION_RETURN_ON_ERROR
);
} }
if ( !handle )
TranslateError(path, dyld_result);
return handle; return handle;
} }