浏览代码

LibCompress: Remove special casing for looping DEFLATE seekbacks

The `copy_from_seekback` method already handles this exactly as DEFLATE
expects, but it is slightly more optimized.
Tim Schumacher 2 年之前
父节点
当前提交
dffef6bb71
共有 1 个文件被更改,包括 3 次插入11 次删除
  1. 3 11
      Userland/Libraries/LibCompress/Deflate.cpp

+ 3 - 11
Userland/Libraries/LibCompress/Deflate.cpp

@@ -211,18 +211,10 @@ ErrorOr<bool> DeflateDecompressor::CompressedBlock::try_read_more()
 
     auto const distance = TRY(m_decompressor.decode_distance(distance_symbol));
 
-    if (distance < length) {
-        for (size_t idx = 0; idx < length; ++idx) {
-            u8 byte = 0;
-            TRY(m_decompressor.m_output_buffer.read_with_seekback({ &byte, sizeof(byte) }, distance));
-            m_decompressor.m_output_buffer.write({ &byte, sizeof(byte) });
-        }
-    } else {
-        auto copied_length = TRY(m_decompressor.m_output_buffer.copy_from_seekback(distance, length));
+    auto copied_length = TRY(m_decompressor.m_output_buffer.copy_from_seekback(distance, length));
 
-        // TODO: What should we do if the output buffer is full?
-        VERIFY(copied_length == length);
-    }
+    // TODO: What should we do if the output buffer is full?
+    VERIFY(copied_length == length);
 
     return true;
 }