From 4af8eea56f6c8194dc267faf10704487992e712c Mon Sep 17 00:00:00 2001 From: asynts Date: Tue, 8 Sep 2020 16:49:05 +0200 Subject: [PATCH] LibCompress: Return Optional from decompress_all method. --- Libraries/LibCompress/Deflate.cpp | 2 +- Libraries/LibCompress/Deflate.h | 2 +- Libraries/LibCompress/Gzip.cpp | 2 +- Libraries/LibCompress/Gzip.h | 2 +- Libraries/LibCompress/Zlib.cpp | 8 +++++++- Libraries/LibCompress/Zlib.h | 8 ++------ Userland/test-compress.cpp | 18 +++++++++--------- 7 files changed, 22 insertions(+), 20 deletions(-) diff --git a/Libraries/LibCompress/Deflate.cpp b/Libraries/LibCompress/Deflate.cpp index daf128f91c..6c43983f8b 100644 --- a/Libraries/LibCompress/Deflate.cpp +++ b/Libraries/LibCompress/Deflate.cpp @@ -303,7 +303,7 @@ bool DeflateDecompressor::discard_or_error(size_t count) bool DeflateDecompressor::eof() const { return m_state == State::Idle && m_read_final_bock; } -ByteBuffer DeflateDecompressor::decompress_all(ReadonlyBytes bytes) +Optional DeflateDecompressor::decompress_all(ReadonlyBytes bytes) { InputMemoryStream memory_stream { bytes }; InputBitStream bit_stream { memory_stream }; diff --git a/Libraries/LibCompress/Deflate.h b/Libraries/LibCompress/Deflate.h index a567c7b9d3..9cdd1bda57 100644 --- a/Libraries/LibCompress/Deflate.h +++ b/Libraries/LibCompress/Deflate.h @@ -94,7 +94,7 @@ public: bool discard_or_error(size_t) override; bool eof() const override; - static ByteBuffer decompress_all(ReadonlyBytes); + static Optional decompress_all(ReadonlyBytes); private: u32 decode_run_length(u32); diff --git a/Libraries/LibCompress/Gzip.cpp b/Libraries/LibCompress/Gzip.cpp index 741eaf7872..12df241224 100644 --- a/Libraries/LibCompress/Gzip.cpp +++ b/Libraries/LibCompress/Gzip.cpp @@ -158,7 +158,7 @@ bool GzipDecompressor::discard_or_error(size_t count) return true; } -ByteBuffer GzipDecompressor::decompress_all(ReadonlyBytes bytes) +Optional GzipDecompressor::decompress_all(ReadonlyBytes bytes) { InputMemoryStream memory_stream { bytes }; GzipDecompressor gzip_stream { memory_stream }; diff --git a/Libraries/LibCompress/Gzip.h b/Libraries/LibCompress/Gzip.h index 72e5e49aba..1c1ea4ad7f 100644 --- a/Libraries/LibCompress/Gzip.h +++ b/Libraries/LibCompress/Gzip.h @@ -41,7 +41,7 @@ public: bool discard_or_error(size_t) override; bool eof() const override; - static ByteBuffer decompress_all(ReadonlyBytes); + static Optional decompress_all(ReadonlyBytes); private: struct [[gnu::packed]] BlockHeader diff --git a/Libraries/LibCompress/Zlib.cpp b/Libraries/LibCompress/Zlib.cpp index 1f7a8f42ea..dc2d112ad6 100644 --- a/Libraries/LibCompress/Zlib.cpp +++ b/Libraries/LibCompress/Zlib.cpp @@ -55,11 +55,17 @@ Zlib::Zlib(ReadonlyBytes data) m_data_bytes = data.slice(2, data.size() - 2 - 4); } -ByteBuffer Zlib::decompress() +Optional Zlib::decompress() { return DeflateDecompressor::decompress_all(m_data_bytes); } +Optional Zlib::decompress_all(ReadonlyBytes bytes) +{ + Zlib zlib { bytes }; + return zlib.decompress(); +} + u32 Zlib::checksum() { if (!m_checksum) { diff --git a/Libraries/LibCompress/Zlib.h b/Libraries/LibCompress/Zlib.h index 4c2c1a6aef..aa2a912095 100644 --- a/Libraries/LibCompress/Zlib.h +++ b/Libraries/LibCompress/Zlib.h @@ -36,14 +36,10 @@ class Zlib { public: Zlib(ReadonlyBytes data); - ByteBuffer decompress(); + Optional decompress(); u32 checksum(); - static ByteBuffer decompress_all(ReadonlyBytes bytes) - { - Zlib zlib { bytes }; - return zlib.decompress(); - } + static Optional decompress_all(ReadonlyBytes); private: u8 m_compression_method; diff --git a/Userland/test-compress.cpp b/Userland/test-compress.cpp index f2670483af..432f439739 100644 --- a/Userland/test-compress.cpp +++ b/Userland/test-compress.cpp @@ -55,7 +55,7 @@ TEST_CASE(deflate_decompress_compressed_block) const u8 uncompressed[] = "This is a simple text file :)"; const auto decompressed = Compress::DeflateDecompressor::decompress_all(compressed); - EXPECT(compare({ uncompressed, sizeof(uncompressed) - 1 }, decompressed.bytes())); + EXPECT(compare({ uncompressed, sizeof(uncompressed) - 1 }, decompressed.value().bytes())); } TEST_CASE(deflate_decompress_uncompressed_block) @@ -68,7 +68,7 @@ TEST_CASE(deflate_decompress_uncompressed_block) const u8 uncompressed[] = "Hello, World!"; const auto decompressed = Compress::DeflateDecompressor::decompress_all(compressed); - EXPECT(compare({ uncompressed, sizeof(uncompressed) - 1 }, decompressed.bytes())); + EXPECT(compare({ uncompressed, sizeof(uncompressed) - 1 }, decompressed.value().bytes())); } TEST_CASE(deflate_decompress_multiple_blocks) @@ -85,7 +85,7 @@ TEST_CASE(deflate_decompress_multiple_blocks) const u8 uncompressed[] = "The first block is uncompressed and the second block is compressed."; const auto decompressed = Compress::DeflateDecompressor::decompress_all(compressed); - EXPECT(compare({ uncompressed, sizeof(uncompressed) - 1 }, decompressed.bytes())); + EXPECT(compare({ uncompressed, sizeof(uncompressed) - 1 }, decompressed.value().bytes())); } TEST_CASE(deflate_decompress_zeroes) @@ -98,7 +98,7 @@ TEST_CASE(deflate_decompress_zeroes) const Array uncompressed { 0 }; const auto decompressed = Compress::DeflateDecompressor::decompress_all(compressed); - EXPECT(compare(uncompressed, decompressed.bytes())); + EXPECT(compare(uncompressed, decompressed.value().bytes())); } TEST_CASE(zlib_decompress_simple) @@ -113,7 +113,7 @@ TEST_CASE(zlib_decompress_simple) const u8 uncompressed[] = "This is a simple text file :)"; const auto decompressed = Compress::Zlib::decompress_all(compressed); - EXPECT(compare({ uncompressed, sizeof(uncompressed) - 1 }, decompressed.bytes())); + EXPECT(compare({ uncompressed, sizeof(uncompressed) - 1 }, decompressed.value().bytes())); } TEST_CASE(gzip_decompress_simple) @@ -127,7 +127,7 @@ TEST_CASE(gzip_decompress_simple) const u8 uncompressed[] = "word1 abc word2"; const auto decompressed = Compress::GzipDecompressor::decompress_all(compressed); - EXPECT(compare({ uncompressed, sizeof(uncompressed) - 1 }, decompressed.bytes())); + EXPECT(compare({ uncompressed, sizeof(uncompressed) - 1 }, decompressed.value().bytes())); } TEST_CASE(gzip_decompress_multiple_members) @@ -143,7 +143,7 @@ TEST_CASE(gzip_decompress_multiple_members) const u8 uncompressed[] = "abcabcabcabc"; const auto decompressed = Compress::GzipDecompressor::decompress_all(compressed); - EXPECT(compare({ uncompressed, sizeof(uncompressed) - 1 }, decompressed.bytes())); + EXPECT(compare({ uncompressed, sizeof(uncompressed) - 1 }, decompressed.value().bytes())); } TEST_CASE(gzip_decompress_zeroes) @@ -168,7 +168,7 @@ TEST_CASE(gzip_decompress_zeroes) const Array uncompressed = { 0 }; const auto decompressed = Compress::GzipDecompressor::decompress_all(compressed); - EXPECT(compare(uncompressed, decompressed.bytes())); + EXPECT(compare(uncompressed, decompressed.value().bytes())); } TEST_CASE(gzip_decompress_repeat_around_buffer) @@ -188,7 +188,7 @@ TEST_CASE(gzip_decompress_repeat_around_buffer) uncompressed.span().slice(0x7f00, 0x0100).fill(1); const auto decompressed = Compress::GzipDecompressor::decompress_all(compressed); - EXPECT(compare(uncompressed, decompressed.bytes())); + EXPECT(compare(uncompressed, decompressed.value().bytes())); } TEST_MAIN(Compress)