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

victor.stinner python-checkins at python.org
Fri Jul 9 01:33:31 CEST 2010


Author: victor.stinner
Date: Fri Jul 9 01:33:31 2010
New Revision: 82718
Log:
zipimporter uses PyUnicode_FSConverter()
to use the file system encoding, not utf-8
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	Fri Jul 9 01:33:31 2010
@@ -60,26 +60,31 @@
 static int
 zipimporter_init(ZipImporter *self, PyObject *args, PyObject *kwds)
 {
+ PyObject *pathbytes;
 char *path, *p, *prefix, buf[MAXPATHLEN+2];
 size_t len;
 
 if (!_PyArg_NoKeywords("zipimporter()", kwds))
 return -1;
 
- if (!PyArg_ParseTuple(args, "s:zipimporter", &path))
+ if (!PyArg_ParseTuple(args, "O&:zipimporter", PyUnicode_FSConverter, &pathbytes))
 return -1;
 
- len = strlen(path);
+ len = PyBytes_GET_SIZE(pathbytes);
 if (len == 0) {
 PyErr_SetString(ZipImportError, "archive path is empty");
+ Py_DECREF(pathbytes);
 return -1;
 }
+ path = PyBytes_AsString(pathbytes);
 if (len >= MAXPATHLEN) {
 PyErr_SetString(ZipImportError,
 "archive path too long");
+ Py_DECREF(pathbytes);
 return -1;
 }
 strcpy(buf, path);
+ Py_DECREF(pathbytes);
 
 #ifdef ALTSEP
 for (p = buf; *p; p++) {


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /