From 57e10eadac01273cc4c0bcb681aa9381cacef0b3 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 7 Feb 2021 01:17:51 +0100 Subject: LibGfx: Don't reject valid GIF animations with interlaced frames We were returning early from the deinterlacing loop after the very last pass, but we should just let the outer loop finish and return instead. This makes the Netscape animation on https://timmorgan.dev work. :^) --- Userland/Libraries/LibGfx/GIFLoader.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'Userland/Libraries') diff --git a/Userland/Libraries/LibGfx/GIFLoader.cpp b/Userland/Libraries/LibGfx/GIFLoader.cpp index 12d9eebba5..4e69cc7fb5 100644 --- a/Userland/Libraries/LibGfx/GIFLoader.cpp +++ b/Userland/Libraries/LibGfx/GIFLoader.cpp @@ -401,10 +401,8 @@ static bool decode_frame(GIFLoadingContext& context, size_t frame_index) if (image.interlaced) { if (row + INTERLACE_ROW_STRIDES[interlace_pass] >= image.height) { ++interlace_pass; - // FIXME: We could probably figure this out earlier and fail before doing a bunch of work. - if (interlace_pass >= 4) - return false; - row = INTERLACE_ROW_OFFSETS[interlace_pass]; + if (interlace_pass < 4) + row = INTERLACE_ROW_OFFSETS[interlace_pass]; } else { row += INTERLACE_ROW_STRIDES[interlace_pass]; } -- cgit v1.2.3