Patch by Jonathan Wight (slightly reformatted) to forestall loading the
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).
diff --git a/Python/dynload_next.c b/Python/dynload_next.c
index 9a5c828..2b34315 100644
--- a/Python/dynload_next.c
+++ b/Python/dynload_next.c
@@ -119,14 +119,18 @@
 		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 @@
 		    case NSObjectFileImageArch:
 			errString = "Wrong CPU type in object file";
 			break;
-		    NSObjectFileImageAccess:
+		    case NSObjectFileImageAccess:
 			errString = "Can't read object file (no access)";
 			break;
 		}