Fix contrib/minizip/zip.c for 64-bit architectures [Dalsnes].
This commit is contained in:
parent
509c1d2860
commit
e1f45fed54
@ -1710,7 +1710,7 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s
|
|||||||
if (err==ZIP_OK)
|
if (err==ZIP_OK)
|
||||||
err = zip64local_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */
|
err = zip64local_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */
|
||||||
|
|
||||||
if(uncompressed_size >= 0xffffffff)
|
if(uncompressed_size >= 0xffffffff || compressed_size >= 0xffffffff )
|
||||||
{
|
{
|
||||||
if(zi->ci.pos_zip64extrainfo > 0)
|
if(zi->ci.pos_zip64extrainfo > 0)
|
||||||
{
|
{
|
||||||
@ -1724,6 +1724,8 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s
|
|||||||
if (err==ZIP_OK) /* uncompressed size, unknown */
|
if (err==ZIP_OK) /* uncompressed size, unknown */
|
||||||
err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8);
|
err = zip64local_putValue(&zi->z_filefunc, zi->filestream, compressed_size, 8);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
err = ZIP_BADZIPFILE; // Caller passed zip64 = 0, so no room for zip64 info -> fatal
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1852,7 +1854,7 @@ int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir,
|
|||||||
err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)0xffffffff,4);
|
err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)0xffffffff,4);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4);
|
err = zip64local_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4);
|
||||||
}
|
}
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
@ -1919,7 +1921,7 @@ extern int ZEXPORT zipClose (zipFile file, const char* global_comment)
|
|||||||
free_linkedlist(&(zi->central_dir));
|
free_linkedlist(&(zi->central_dir));
|
||||||
|
|
||||||
pos = centraldir_pos_inzip - zi->add_position_when_writting_offset;
|
pos = centraldir_pos_inzip - zi->add_position_when_writting_offset;
|
||||||
if(pos >= 0xffffffff)
|
if(pos >= 0xffffffff || zi->number_entry > 0xFFFF)
|
||||||
{
|
{
|
||||||
ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream);
|
ZPOS64_T Zip64EOCDpos = ZTELL64(zi->z_filefunc,zi->filestream);
|
||||||
Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip);
|
Write_Zip64EndOfCentralDirectoryRecord(zi, size_centraldir, centraldir_pos_inzip);
|
||||||
|
Loading…
Reference in New Issue
Block a user