diff options
| author | Mark Adler <madler@alumni.caltech.edu> | 2012-01-16 17:45:58 -0800 |
|---|---|---|
| committer | Mark Adler <madler@alumni.caltech.edu> | 2012-01-16 18:51:31 -0800 |
| commit | e1f45fed541cf462f2c68fc70cad135b2f810708 (patch) | |
| tree | 5d590e16a90c64c25dbbdb745a091ceaec2625ea /contrib | |
| parent | 509c1d2860c82ceeae8a3e3a32ef21edc3afa447 (diff) | |
| download | zlib-e1f45fed541cf462f2c68fc70cad135b2f810708.tar.gz zlib-e1f45fed541cf462f2c68fc70cad135b2f810708.tar.bz2 zlib-e1f45fed541cf462f2c68fc70cad135b2f810708.zip | |
Fix contrib/minizip/zip.c for 64-bit architectures [Dalsnes].
Diffstat (limited to 'contrib')
| -rw-r--r-- | contrib/minizip/zip.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/contrib/minizip/zip.c b/contrib/minizip/zip.c index 3c34fc8..4f76904 100644 --- a/contrib/minizip/zip.c +++ b/contrib/minizip/zip.c | |||
| @@ -1710,7 +1710,7 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s | |||
| 1710 | if (err==ZIP_OK) | 1710 | if (err==ZIP_OK) |
| 1711 | err = zip64local_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */ | 1711 | err = zip64local_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */ |
| 1712 | 1712 | ||
| 1713 | if(uncompressed_size >= 0xffffffff) | 1713 | if(uncompressed_size >= 0xffffffff || compressed_size >= 0xffffffff ) |
| 1714 | { | 1714 | { |
| 1715 | if(zi->ci.pos_zip64extrainfo > 0) | 1715 | if(zi->ci.pos_zip64extrainfo > 0) |
| 1716 | { | 1716 | { |
| @@ -1724,6 +1724,8 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s | |||
| 1724 | if (err==ZIP_OK) /* uncompressed size, unknown */ | 1724 | if (err==ZIP_OK) /* uncompressed size, unknown */ |
| 1725 | err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8); | 1725 | err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8); |
| 1726 | } | 1726 | } |
| 1727 | else | ||
| 1728 | err = ZIP_BADZIPFILE; // Caller passed zip64 = 0, so no room for zip64 info -> fatal | ||
| 1727 | } | 1729 | } |
| 1728 | else | 1730 | else |
| 1729 | { | 1731 | { |
| @@ -1852,7 +1854,7 @@ int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, | |||
| 1852 | err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)0xffffffff,4); | 1854 | err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)0xffffffff,4); |
| 1853 | } | 1855 | } |
| 1854 | else | 1856 | else |
| 1855 | err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4); | 1857 | err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4); |
| 1856 | } | 1858 | } |
| 1857 | 1859 | ||
| 1858 | return err; | 1860 | return err; |
| @@ -1919,7 +1921,7 @@ extern int ZEXPORT zipClose (zipFile file, const char* global_comment) | |||
| 1919 | free_linkedlist(&(zi->central_dir)); | 1921 | free_linkedlist(&(zi->central_dir)); |
| 1920 | 1922 | ||
| 1921 | pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; | 1923 | pos = centraldir_pos_inzip - zi->add_position_when_writting_offset; |
| 1922 | if(pos >= 0xffffffff) | 1924 | if(pos >= 0xffffffff || zi->number_entry > 0xFFFF) |
| 1923 | { | 1925 | { |
| 1924 | ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream); | 1926 | ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream); |
| 1925 | Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip); | 1927 | Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip); |
