From 693d34fe3d590e1a7c92f3f44e7b0dad02e37dc0 Mon Sep 17 00:00:00 2001 From: Karol Kosek Date: Sat, 9 Jul 2022 19:31:09 +0200 Subject: [PATCH] LibCompress: Write Deflate window size in the Zlib header Previously we said that the window size was always 512 bytes, which caused errors during decompressing in apps outside of Serenity that actually use this information. Now, the value is always 7 (32 KiB). Fixes: #14503 --- Userland/Libraries/LibCompress/Zlib.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibCompress/Zlib.cpp b/Userland/Libraries/LibCompress/Zlib.cpp index eb0f43e1737..f0ff7354ee1 100644 --- a/Userland/Libraries/LibCompress/Zlib.cpp +++ b/Userland/Libraries/LibCompress/Zlib.cpp @@ -84,9 +84,15 @@ ZlibCompressor::~ZlibCompressor() void ZlibCompressor::write_header(ZlibCompressionMethod compression_method, ZlibCompressionLevel compression_level) { + u8 compression_info = 0; + if (compression_method == ZlibCompressionMethod::Deflate) { + compression_info = AK::log2(DeflateCompressor::window_size) - 8; + VERIFY(compression_info <= 7); + } + ZlibHeader header { .compression_method = compression_method, - .compression_info = 0, + .compression_info = compression_info, .check_bits = 0, .present_dictionary = false, .compression_level = compression_level,