diff --git a/Userland/Libraries/LibGfx/ImageFormats/JPEGXLLoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/JPEGXLLoader.cpp index 7332135b54..676181b348 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/JPEGXLLoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/JPEGXLLoader.cpp @@ -67,6 +67,15 @@ static ALWAYS_INLINE ErrorOr U64(LittleEndianInputBitStream& stream) return value; } + +// This is not specified +static ErrorOr read_string(LittleEndianInputBitStream& stream) +{ + auto const name_length = U32(0, TRY(stream.read_bits(4)), 16 + TRY(stream.read_bits(5)), 48 + TRY(stream.read_bits(10))); + auto string_buffer = TRY(FixedArray::create(name_length)); + TRY(stream.read_until_filled(string_buffer.span())); + return String::from_utf8(StringView { string_buffer.span() }); +} /// /// D.2 - Image dimensions @@ -629,11 +638,7 @@ static ErrorOr read_frame_header(LittleEndianInputBitStream& stream if (frame_header.frame_type == FrameHeader::FrameType::kReferenceOnly || (resets_canvas && can_reference)) frame_header.save_before_ct = TRY(stream.read_bit()); - auto const name_length = U32(0, TRY(stream.read_bits(4)), 16 + TRY(stream.read_bits(5)), 48 + TRY(stream.read_bits(10))); - auto string_buffer = TRY(FixedArray::create(name_length)); - TRY(stream.read_until_filled(string_buffer.span())); - - frame_header.name = TRY(String::from_utf8(StringView { string_buffer.span() })); + frame_header.name = TRY(read_string(stream)); frame_header.restoration_filter = TRY(read_restoration_filter(stream));