[XM] Dynamically look up NSExtensionMain to unbreak pre-10.10 XM apps (#154)
* [XM] Dynamically look up NSExtensionMain to unbreak pre-10.10 XM apps - So having a simple reference to NSExtensionMain is enough for /usr/lib/libextension.dylib to get added as a reference to libxammac.dylib - If you have a reference to /usr/lib/libextension.dylib then any XM app (including our tests) bomb out on startup. This is suboptimal. - So dlopen/dysm our way to victory. * Fix spacing
This commit is contained in:
Родитель
9c01fe6c9d
Коммит
b7a797b068
|
@ -581,7 +581,19 @@ int xamarin_main (int argc, char **argv, bool is_extension)
|
|||
*ptr = NULL;
|
||||
|
||||
if (is_extension) {
|
||||
rv = NSExtensionMain (new_argc, new_argv);
|
||||
void * libExtensionHandle = dlopen ("/usr/lib/libextension.dylib", RTLD_LAZY);
|
||||
if (libExtensionHandle == nil)
|
||||
exit_with_message ("Unable to load libextension.dylib", data.basename, false);
|
||||
|
||||
typedef int (*extension_main)(int argc, char * argv[]);
|
||||
|
||||
extension_main extensionMain = (extension_main) dlsym (libExtensionHandle, "NSExtensionMain");
|
||||
|
||||
if (extensionMain == nil)
|
||||
exit_with_message ("Unable to load NSExtensionMain", data.basename, false);
|
||||
|
||||
rv = (*extensionMain) (new_argc, new_argv);
|
||||
dlclose (libExtensionHandle);
|
||||
} else {
|
||||
rv = mono_main (new_argc, new_argv);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче