Mercurial > cpython-lru_cache-weakref
diff Python/import.c @ 65349:bb30393d1ea1
imp.load_dynamic() uses PyUnicode_FSConverter() to support surrogates
in the library path.
| author | Victor Stinner <victor.stinner@haypocalc.com> |
|---|---|
| date | Fri, 15 Oct 2010 12:48:01 +0000 |
| parents | 39014f0abc32 |
| children | 844ed6dddc03 |
line wrap: on
line diff
--- a/Python/import.c Fri Oct 15 12:04:23 2010 +0000 +++ b/Python/import.c Fri Oct 15 12:48:01 2010 +0000 @@ -3326,24 +3326,24 @@ imp_load_dynamic(PyObject *self, PyObject *args) { char *name; + PyObject *pathbytes; char *pathname; PyObject *fob = NULL; PyObject *m; FILE *fp = NULL; - if (!PyArg_ParseTuple(args, "ses|O:load_dynamic", - &name, - Py_FileSystemDefaultEncoding, &pathname, - &fob)) + if (!PyArg_ParseTuple(args, "sO&|O:load_dynamic", + &name, PyUnicode_FSConverter, &pathbytes, &fob)) return NULL; + pathname = PyBytes_AS_STRING(pathbytes); if (fob) { fp = get_file(pathname, fob, "r"); if (fp == NULL) { - PyMem_Free(pathname); + Py_DECREF(pathbytes); return NULL; } } m = _PyImport_LoadDynamicModule(name, pathname, fp); - PyMem_Free(pathname); + Py_DECREF(pathbytes); if (fp) fclose(fp); return m;
