[Python-checkins] r82908 - python/branches/import_unicode/Modules/zipimport.c

victor.stinner python-checkins at python.org
Wed Jul 14 22:38:26 CEST 2010


Author: victor.stinner
Date: Wed Jul 14 22:38:26 2010
New Revision: 82908

Log:
get_code_from_data() uses PyUnicode_EncodeFSDefault()

Modified:
   python/branches/import_unicode/Modules/zipimport.c

Modified: python/branches/import_unicode/Modules/zipimport.c
==============================================================================
--- python/branches/import_unicode/Modules/zipimport.c	(original)
+++ python/branches/import_unicode/Modules/zipimport.c	Wed Jul 14 22:38:26 2010
@@ -1107,20 +1107,23 @@
                    time_t mtime, PyObject *toc_entry)
 {
     PyObject *data, *code;
+    PyObject *modpath_bytes;
     char *modpath;
 
     data = get_data(self->archive, toc_entry);
     if (data == NULL)
         return NULL;
 
-    modpath = _PyUnicode_AsString(PyTuple_GetItem(toc_entry, 0));
+    modpath_bytes = PyUnicode_EncodeFSDefault(PyTuple_GetItem(toc_entry, 0));
+    if (modpath_bytes == NULL)
+        return NULL;
+    modpath = PyBytes_AS_STRING(modpath_bytes);
 
-    if (isbytecode) {
+    if (isbytecode)
         code = unmarshal_code(modpath, data, mtime);
-    }
-    else {
+    else
         code = compile_source(modpath, data);
-    }
+    Py_DECREF(modpath_bytes);
     Py_DECREF(data);
     return code;
 }


More information about the Python-checkins mailing list