diff options
author | Gregory P. Smith <greg@krypto.org> | 2012-01-30 23:55:29 (GMT) |
---|---|---|
committer | Gregory P. Smith <greg@krypto.org> | 2012-01-30 23:55:29 (GMT) |
commit | cc6abd56b8197bac713ea8d70ac621e78f5aadd8 (patch) | |
tree | 98746ecd433c826fcb6093687760bc05206c94c8 /Modules | |
parent | f3b2d88b676d5624aed157a70bfa5b606f8249ed (diff) | |
parent | ab32066e65f67e14b3af4ed61333ed083446b225 (diff) | |
download | cpython-cc6abd56b8197bac713ea8d70ac621e78f5aadd8.zip cpython-cc6abd56b8197bac713ea8d70ac621e78f5aadd8.tar.gz cpython-cc6abd56b8197bac713ea8d70ac621e78f5aadd8.tar.bz2 |
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).
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/zipimport.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/Modules/zipimport.c b/Modules/zipimport.c index 68929ba..f822f92 100644 --- a/Modules/zipimport.c +++ b/Modules/zipimport.c @@ -728,14 +728,15 @@ read_directory(PyObject *archive) 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 @@ read_directory(PyObject *archive) 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; |