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); |