From 91b25d87b1852f0066e6875efe0bce7438ea1fb1 Mon Sep 17 00:00:00 2001 From: Alex Richard Date: Tue, 30 Nov 2021 01:05:31 -0600 Subject: Improve performance of reading zip file by not processing header (#1370) --- src/luarocks/tools/zip.lua | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/luarocks/tools/zip.lua b/src/luarocks/tools/zip.lua index 7803b509..82d582fa 100644 --- a/src/luarocks/tools/zip.lua +++ b/src/luarocks/tools/zip.lua @@ -329,19 +329,13 @@ local function read_file_in_zip(zh, cdr) return nil, "failed reading Local File Header signature" end - local lfh = {} - lfh.version_needed = lestring_to_number(zh:read(2)) - lfh.bitflag = lestring_to_number(zh:read(2)) - lfh.compression_method = lestring_to_number(zh:read(2)) - lfh.last_mod_file_time = lestring_to_number(zh:read(2)) - lfh.last_mod_file_date = lestring_to_number(zh:read(2)) - lfh.crc32 = lestring_to_number(zh:read(4)) - lfh.compressed_size = lestring_to_number(zh:read(4)) - lfh.uncompressed_size = lestring_to_number(zh:read(4)) - lfh.file_name_length = lestring_to_number(zh:read(2)) - lfh.extra_field_length = lestring_to_number(zh:read(2)) - lfh.file_name = zh:read(lfh.file_name_length) - lfh.extra_field = zh:read(lfh.extra_field_length) + -- Skip over the rest of the zip file header. See + -- zipwriter_close_file_in_zip for the format. + zh:seek("cur", 22) + local file_name_length = lestring_to_number(zh:read(2)) + local extra_field_length = lestring_to_number(zh:read(2)) + zh:read(file_name_length) + zh:read(extra_field_length) local data = zh:read(cdr.compressed_size) -- cgit v1.2.3-55-g6feb