Fix for 838140: don't call NSUnlinkModule when we fail to find our
expected entrypoint. The unlinking will crash the application if the
module contained ObjC code. The price of this is small: a little wasted
memory, and only in a case than isn't expected to occur often.
diff --git a/Python/dynload_next.c b/Python/dynload_next.c
index cf42cb7..27df356 100644
--- a/Python/dynload_next.c
+++ b/Python/dynload_next.c
@@ -92,7 +92,7 @@
#ifdef USE_DYLD_GLOBAL_NAMESPACE
if (!NSIsSymbolNameDefined(funcname)) {
/* UnlinkModule() isn't implemented in current versions, but calling it does no harm */
- NSUnLinkModule(newModule, FALSE);
+ /* NSUnLinkModule(newModule, FALSE); removed: causes problems for ObjC code */
PyErr_Format(PyExc_ImportError,
"Loaded module does not contain symbol %.200s",
funcname);
@@ -102,7 +102,7 @@
#else
theSym = NSLookupSymbolInModule(newModule, funcname);
if ( theSym == NULL ) {
- NSUnLinkModule(newModule, FALSE);
+ /* NSUnLinkModule(newModule, FALSE); removed: causes problems for ObjC code */
PyErr_Format(PyExc_ImportError,
"Loaded module does not contain symbol %.200s",
funcname);