[Python-checkins] cpython (merge 3.2 -> default): Fix zipimport.c's read_directory() to use appropriate types for the values

gregory.p.smith python-checkins at python.org
Tue Jan 31 00:55:41 CET 2012


http://hg.python.org/cpython/rev/2db416b953e8
changeset: 74691:2db416b953e8
parent: 74689:80ddbd822227
parent: 74690:c5a09a96f533
user: Gregory P. Smith <greg at krypto.org>
date: Mon Jan 30 15:55:29 2012 -0800
summary:
 Fix zipimport.c's read_directory() to use appropriate types for the values
being read from the header vs the values being used by fseek and ftell
(Py_ssize_t for those). Updates the Py_BuildValue format string to match
(including several existing wrong 'i's that should have been 'l's).
files:
 Modules/zipimport.c | 9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/Modules/zipimport.c b/Modules/zipimport.c
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -728,14 +728,15 @@
 PyObject *files = NULL;
 FILE *fp;
 unsigned short flags;
- long compress, crc, data_size, file_size, file_offset, date, time;
- long header_offset, name_size, header_size, header_position;
+ short compress, time, date, name_size;
+ long crc, data_size, file_size, header_size;
+ Py_ssize_t file_offset, header_position, header_offset;
 long l, count;
 Py_ssize_t i;
 char name[MAXPATHLEN + 5];
 PyObject *nameobj = NULL;
 char *p, endof_central_dir[22];
- long arc_offset; /* offset from beginning of file to start of zip-archive */
+ Py_ssize_t arc_offset; /* Absolute offset to start of the zip-archive. */
 PyObject *path;
 const char *charset;
 int bootstrap;
@@ -835,7 +836,7 @@
 path = PyUnicode_FromFormat("%U%c%U", archive, SEP, nameobj);
 if (path == NULL)
 goto error;
- t = Py_BuildValue("Niiiiiii", path, compress, data_size,
+ t = Py_BuildValue("Nhllnhhl", path, compress, data_size,
 file_size, file_offset, time, date, crc);
 if (t == NULL)
 goto error;
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

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