Sfoglia il codice sorgente

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

This allows decoding files (eg. 24bit) that may have been badly encoded.
Nicolas Ramz 1 anno fa
parent
commit
caa13d3960
1 ha cambiato i file con 2 aggiunte e 1 eliminazioni
  1. 2 1
      Userland/Libraries/LibGfx/ImageFormats/ILBMLoader.cpp

+ 2 - 1
Userland/Libraries/LibGfx/ImageFormats/ILBMLoader.cpp

@@ -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