Patch by Jack Jansen:
authorGuido van Rossum <guido@python.org>
Mon, 14 Feb 2000 17:58:25 +0000 (17:58 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 14 Feb 2000 17:58:25 +0000 (17:58 +0000)
If we attempt to import a dynamic module in a newer (or older) version
of Python give an error message tailored to the situation (Python too
new/old).

Python/dynload_mac.c

index 58c57d507417c7955fe55b2451c46c47ae8ff980..884680311ff34bf813359bb1fa440ca36468848c 100644 (file)
@@ -114,6 +114,18 @@ dl_funcptr _PyImport_GetDynLoadFunc(const char *fqname, const char *shortname,
        err = GetDiskFragment(&libspec, 0, 0, fragname, 
                              kLoadCFrag, &connID, &mainAddr,
                              errMessage);
+       if ( err == cfragImportTooOldErr || err == cfragImportTooNewErr ) {
+               /*
+               ** Special-case code: if PythonCore is too old or too new this means
+               ** the dynamic module was meant for a different Python.
+               */
+               if (errMessage[0] == 10 && strncmp((char *)errMessage+1, "PythonCore", 10) == 0 ) {
+                       sprintf(buf, "Dynamic module was built for %s version of MacPython",
+                               (err == cfragImportTooOldErr ? "a newer" : "an older"));
+                       PyErr_SetString(PyExc_ImportError, buf);
+                       return NULL;
+               }
+       }
        if ( err ) {
                sprintf(buf, "%.*s: %.200s",
                        errMessage[0], errMessage+1,