Skip to content

Commit a048c5d

Browse files
committed
Issue #5784: wbits=0 apparently added in zlib v1.2.3.5
1 parent 233da62 commit a048c5d

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

Doc/library/zlib.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ The available exception and functions in this module are:
142142
must include a zlib header and trailer.
143143

144144
* 0: Automatically determine the window size from the zlib header.
145+
Only supported since zlib 1.2.3.5.
145146

146147
* −8 to −15: Uses the absolute value of *wbits* as the window size
147148
logarithm. The input must be a raw stream with no header or trailer.

Lib/test/test_zlib.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -681,10 +681,18 @@ def test_length_overflow(self, size):
681681
data = None
682682

683683
def test_wbits(self):
684+
# wbits=0 only supported since zlib v1.2.3.5
685+
# Register "1.2.3" as "1.2.3.0"
686+
v = (zlib.ZLIB_RUNTIME_VERSION + ".0").split(".", 4)
687+
supports_wbits_0 = int(v[0]) > 1 or int(v[0]) == 1 \
688+
and (int(v[1]) > 2 or int(v[1]) == 2
689+
and (int(v[2]) > 3 or int(v[2]) == 3 and int(v[3]) >= 5))
690+
684691
co = zlib.compressobj(level=1, wbits=15)
685692
zlib15 = co.compress(HAMLET_SCENE) + co.flush()
686693
self.assertEqual(zlib.decompress(zlib15, 15), HAMLET_SCENE)
687-
self.assertEqual(zlib.decompress(zlib15, 0), HAMLET_SCENE)
694+
if supports_wbits_0:
695+
self.assertEqual(zlib.decompress(zlib15, 0), HAMLET_SCENE)
688696
self.assertEqual(zlib.decompress(zlib15, 32 + 15), HAMLET_SCENE)
689697
with self.assertRaisesRegex(zlib.error, 'invalid window size'):
690698
zlib.decompress(zlib15, 14)
@@ -698,7 +706,8 @@ def test_wbits(self):
698706
zlib9 = co.compress(HAMLET_SCENE) + co.flush()
699707
self.assertEqual(zlib.decompress(zlib9, 9), HAMLET_SCENE)
700708
self.assertEqual(zlib.decompress(zlib9, 15), HAMLET_SCENE)
701-
self.assertEqual(zlib.decompress(zlib9, 0), HAMLET_SCENE)
709+
if supports_wbits_0:
710+
self.assertEqual(zlib.decompress(zlib9, 0), HAMLET_SCENE)
702711
self.assertEqual(zlib.decompress(zlib9, 32 + 9), HAMLET_SCENE)
703712
dco = zlib.decompressobj(wbits=32 + 9)
704713
self.assertEqual(dco.decompress(zlib9), HAMLET_SCENE)

0 commit comments

Comments
 (0)