Skip to content

Commit 36ac747

Browse files
committed
Fix gzip header
1 parent f5a744a commit 36ac747

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

src/isal/igzip.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,15 +123,19 @@ def __repr__(self):
123123
def flush(self, zlib_mode=isal_zlib.Z_SYNC_FLUSH):
124124
super().flush(zlib_mode)
125125

126-
def _write_gzip_header(self, compresslevel):
126+
def _write_gzip_header(self, compresslevel = _COMPRESS_LEVEL_TRADEOFF):
127127
# Determine what xfl flag is written for the compression level.
128128
# Equate the fast level to gzip level 1. All the other levels are
129129
# medium.
130-
if compresslevel == _COMPRESS_LEVEL_FAST:
131-
compresslevel = gzip._COMPRESS_LEVEL_FAST
130+
if sys.version_info[0] == 3 and sys.version_info[1] < 7:
131+
# Correct header introduced in 3.7
132+
super()._write_gzip_header()
132133
else:
133-
compresslevel = gzip._COMPRESS_LEVEL_TRADEOFF
134-
super()._write_gzip_header(compresslevel)
134+
if compresslevel == _COMPRESS_LEVEL_FAST:
135+
compresslevel = gzip._COMPRESS_LEVEL_FAST
136+
else:
137+
compresslevel = gzip._COMPRESS_LEVEL_TRADEOFF
138+
super()._write_gzip_header(compresslevel)
135139

136140
def write(self, data):
137141
self._check_not_closed()

tests/test_gzip_compliance.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -365,8 +365,10 @@ def test_metadata(self):
365365
struct.pack('<i', mtime)) # little-endian
366366

367367
xflByte = fRead.read(1)
368-
self.assertEqual(xflByte, b'\x02') # maximum compression
369-
368+
if sys.version_info[0] == 3 and sys.version_info[1] < 7:
369+
self.assertEqual(xflByte, b'\x02') # maximum compression
370+
else:
371+
self.assertEqual(xflByte, b'\x00') # medium compression
370372
osByte = fRead.read(1)
371373
self.assertEqual(osByte, b'\xff') # OS "unknown" (OS-independent)
372374

@@ -460,7 +462,7 @@ def test_igzip_BadGzipFile_exception(self):
460462
def test_bad_gzip_file(self):
461463
major, minor, _, _, _ = sys.version_info
462464
if major == 3 and minor >= 8 or major > 3:
463-
error = igzip.BadGzipFile
465+
error = gzip.BadGzipFile
464466
else:
465467
error = OSError
466468

0 commit comments

Comments
 (0)