LibGfx/ILBMLoader: Stop the decoding loop when plane buffer is full

This allows decoding files (eg. 24bit) that may have been badly encoded.
This commit is contained in:
Nicolas Ramz 2023-12-15 16:13:00 +01:00 committed by Sam Atkins
parent 19a2cc5634
commit caa13d3960
Notes: sideshowbarker 2024-07-17 08:35:21 +09:00

View File

@ -233,7 +233,8 @@ static ErrorOr<ByteBuffer> uncompress_byte_run(ReadonlyBytes data, ILBMLoadingCo
u32 index = 0;
u32 read_bytes = 0;
while (read_bytes < length) {
// Uncompressing is done once we've read all buffer or plane buffer has been fully filled
while (read_bytes < length && index < plane_data_size) {
auto const byte = static_cast<i8>(data[read_bytes++]);
if (byte >= -127 && byte <= -1) {
// read next byte