From 9363dca3f818fa046bdef5d8dbd73f2cbde42fb0 Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Fri, 24 Jan 2003 16:15:45 +0000 Subject: MacPython-OS9 specific fix: If there are non-string items on sys.path don't try to intern them. This has the theoretical problem that resource filenames on sys.path cannot be unicode objects, but in practice that shouldn't matter. --- Python/import.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/Python/import.c b/Python/import.c index 5df1f0a..b2cefc0 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1214,23 +1214,26 @@ find_module(char *fullname, char *subname, PyObject *path, char *buf, ** Speedup: each sys.path item is interned, and ** FindResourceModule remembers which items refer to ** folders (so we don't have to bother trying to look - ** into them for resources). + ** into them for resources). We only do this for string + ** items. */ - PyString_InternInPlace(&PyList_GET_ITEM(path, i)); - v = PyList_GET_ITEM(path, i); - if (PyMac_FindResourceModule((PyStringObject *)v, name, buf)) { - static struct filedescr resfiledescr = - {"", "", PY_RESOURCE}; - - Py_XDECREF(copy); - return &resfiledescr; - } - if (PyMac_FindCodeResourceModule((PyStringObject *)v, name, buf)) { - static struct filedescr resfiledescr = - {"", "", PY_CODERESOURCE}; + if (PyString_Check(PyList_GET_ITEM(path, i))) { + PyString_InternInPlace(&PyList_GET_ITEM(path, i)); + v = PyList_GET_ITEM(path, i); + if (PyMac_FindResourceModule((PyStringObject *)v, name, buf)) { + static struct filedescr resfiledescr = + {"", "", PY_RESOURCE}; + + Py_XDECREF(copy); + return &resfiledescr; + } + if (PyMac_FindCodeResourceModule((PyStringObject *)v, name, buf)) { + static struct filedescr resfiledescr = + {"", "", PY_CODERESOURCE}; - Py_XDECREF(copy); - return &resfiledescr; + Py_XDECREF(copy); + return &resfiledescr; + } } #endif if (len > 0 && buf[len-1] != SEP -- cgit v0.12