]> granicus.if.org Git - python/commitdiff
Patch by Jonathan Wight (slightly reformatted) to forestall loading the
authorJack Jansen <jack.jansen@cwi.nl>
Sat, 11 Aug 2001 21:54:11 +0000 (21:54 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Sat, 11 Aug 2001 21:54:11 +0000 (21:54 +0000)
same module twice, which apparently crashes Python. I could not test the
error condition, but in normal life it seems to have no adverse effects.

Also removed an unsued variable, and corrected 2 glaring errors (missing
'case' in front of a label).

Python/dynload_next.c

index 9a5c828add938265a08a5074ff4decbcec58f54f..2b34315adf0000eda1fb1f8074c56e68d14cbc49 100644 (file)
@@ -119,14 +119,18 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
                NSObjectFileImage image;
                NSModule newModule;
                NSSymbol theSym;
-               void *symaddr;
                const char *errString;
        
+               if (NSIsSymbolNameDefined(funcname)) {
+                       theSym = NSLookupAndBindSymbol(funcname);
+                       p = (dl_funcptr)NSAddressOfSymbol(theSym);
+                       return p;
+               }
                rc = NSCreateObjectFileImageFromFile(pathname, &image);
                switch(rc) {
                    default:
                    case NSObjectFileImageFailure:
-                   NSObjectFileImageFormat:
+                   case NSObjectFileImageFormat:
                    /* for these a message is printed on stderr by dyld */
                        errString = "Can't create object file image";
                        break;
@@ -139,7 +143,7 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
                    case NSObjectFileImageArch:
                        errString = "Wrong CPU type in object file";
                        break;
-                   NSObjectFileImageAccess:
+                   case NSObjectFileImageAccess:
                        errString = "Can't read object file (no access)";
                        break;
                }