Clear data descriptor bitflags -- libzip currently never writes one.
diff --git a/lib/zip_close.c b/lib/zip_close.c index caa268e..def189b 100644 --- a/lib/zip_close.c +++ b/lib/zip_close.c
@@ -110,8 +110,7 @@ return -1; } - if ((filelist=(struct zip_filelist *)malloc(sizeof(filelist[0])*survivors)) - == NULL) + if ((filelist=(struct zip_filelist *)malloc(sizeof(filelist[0])*survivors)) == NULL) return -1; /* archive comment is special for torrentzip */ @@ -215,7 +214,9 @@ } else { zip_uint64_t offset; - + + /* when copying data, all sizes are known -> no data descriptor needed */ + de->bitflags &= ~ZIP_GPBF_DATA_DESCRIPTOR; if (_zip_dirent_write(de, out, ZIP_FL_LOCAL, &za->error) < 0) { error = 1; break; @@ -337,6 +338,8 @@ offstart = ftello(ft); + /* as long as we don't support non-seekable output, clear data descriptor bit */ + de->bitflags &= ~ZIP_GPBF_DATA_DESCRIPTOR; if ((is_zip64=_zip_dirent_write(de, ft, flags, &za->error)) < 0) return -1;