From 68e916490b63c8084bfc00145ba3326c8e57e8aa Mon Sep 17 00:00:00 2001 From: Nicolas Ramz Date: Fri, 6 Oct 2023 11:55:20 +0200 Subject: [PATCH] LibGfx/JPEGWriter: Fix crash on macOS when csize coefficient is 0 This fixes #21108 --- Tests/LibWeb/Text/expected/canvas/export.txt | 1 + Tests/LibWeb/Text/input/canvas/export.html | 9 ++++----- Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp | 4 ++++ 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Tests/LibWeb/Text/expected/canvas/export.txt b/Tests/LibWeb/Text/expected/canvas/export.txt index 59ec16ed03..5fde1c8066 100644 --- a/Tests/LibWeb/Text/expected/canvas/export.txt +++ b/Tests/LibWeb/Text/expected/canvas/export.txt @@ -1 +1,2 @@ 1. "image/png" +2. "image/jpeg" diff --git a/Tests/LibWeb/Text/input/canvas/export.html b/Tests/LibWeb/Text/input/canvas/export.html index 68606d35b8..982a0a4511 100644 --- a/Tests/LibWeb/Text/input/canvas/export.html +++ b/Tests/LibWeb/Text/input/canvas/export.html @@ -13,10 +13,9 @@ }); // 2. Export a canvas to JPEG data URL - // FIXME: This fails on macOS: https://github.com/SerenityOS/serenity/issues/21108 - // testPart(() => { - // const canvas = document.createElement('canvas'); - // return canvas.toDataURL('image/jpeg').substring(5, 15); - // }); + testPart(() => { + const canvas = document.createElement('canvas'); + return canvas.toDataURL('image/jpeg').substring(5, 15); + }); }); diff --git a/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp b/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp index 87bab3de59..90c119b733 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp @@ -326,6 +326,10 @@ private: static u8 csize(i16 coefficient) { VERIFY(coefficient >= -2047 && coefficient <= 2047); + + if (coefficient == 0) + return 0; + return floor(log2(abs(coefficient))) + 1; }