Commit e817acd9 authored by Guido van Rossum's avatar Guido van Rossum

Patch by Jack Jansen:

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).
parent a5058122
......@@ -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,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment