[Python-checkins] r82670 - python/branches/import_unicode/Python/import.c
victor.stinner
python-checkins at python.org
Fri Jul 9 01:32:20 CEST 2010
Author: victor.stinner
Date: Fri Jul 9 01:32:20 2010
New Revision: 82670
Log:
load_package() path is an object
instead of a char*
Modified:
python/branches/import_unicode/Python/import.c
Modified: python/branches/import_unicode/Python/import.c
==============================================================================
--- python/branches/import_unicode/Python/import.c (original)
+++ python/branches/import_unicode/Python/import.c Fri Jul 9 01:32:20 2010
@@ -1381,7 +1381,7 @@
REFERENCE COUNT */
static PyObject *
-load_package(char *name, char *pathname)
+load_package(char *name, PyObject *pathobj)
{
PyObject *m, *d;
PyObject *file = NULL;
@@ -1390,6 +1390,10 @@
char buf[MAXPATHLEN+1];
FILE *fp = NULL;
struct filedescr *fdp;
+ char *pathname;
+
+ /* FIXME: don't use _PyUnicode_AsString */
+ pathname = _PyUnicode_AsString(pathobj);
m = PyImport_AddModule(name);
if (m == NULL)
@@ -2087,9 +2091,14 @@
}
#endif
- case PKG_DIRECTORY:
- m = load_package(name, pathname);
+ case PKG_DIRECTORY: {
+ PyObject *pathobj = PyUnicode_DecodeFSDefault(pathname);
+ if (pathobj == NULL)
+ return NULL;
+ m = load_package(name, pathobj);
+ Py_DECREF(pathobj);
break;
+ }
case C_BUILTIN:
case PY_FROZEN:
@@ -3455,14 +3464,11 @@
imp_load_package(PyObject *self, PyObject *args)
{
char *name;
- char *pathname;
- PyObject * ret;
- if (!PyArg_ParseTuple(args, "ses:load_package",
- &name, Py_FileSystemDefaultEncoding, &pathname))
+ PyObject *pathname;
+ if (!PyArg_ParseTuple(args, "sU:load_package",
+ &name, &pathname))
return NULL;
- ret = load_package(name, pathname);
- PyMem_Free(pathname);
- return ret;
+ return load_package(name, pathname);
}
static PyObject *
More information about the Python-checkins
mailing list