1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:48:10 +00:00

LibGfx: Use zlib instead of just deflate when loading PNGs

PNGs use deflate with zlib, however we were just skipping the zlib
bytes and then piping it into deflate decompressor. Since we have a
zlib decompressor, lets use that instead.

This has the added benefit of extra error checking.
This commit is contained in:
Luke 2021-03-28 15:33:37 +01:00 committed by Andreas Kling
parent 8c99968ec1
commit c3d4fbb2a5

View file

@ -28,7 +28,7 @@
#include <AK/Endian.h>
#include <AK/LexicalPath.h>
#include <AK/MappedFile.h>
#include <LibCompress/Gzip.h>
#include <LibCompress/Zlib.h>
#include <LibGfx/PNGLoader.h>
#include <fcntl.h>
#include <math.h>
@ -777,7 +777,7 @@ static bool decode_png_bitmap(PNGLoadingContext& context)
if (context.color_type == 3 && context.palette_data.is_empty())
return false; // Didn't see a PLTE chunk for a palettized image, or it was empty.
auto result = Compress::DeflateDecompressor::decompress_all(context.compressed_data.span().slice(2));
auto result = Compress::Zlib::decompress_all(context.compressed_data.span());
if (!result.has_value()) {
context.state = PNGLoadingContext::State::Error;
return false;