mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 12:57:34 +00:00
LibCompress+AK: Propagate error handling to wrapped streams
This ensures that when a DeflateCompressor stream is cleared of any errors its underlying wrapped streams (InputBitStream/InputMemoryStream) will be cleared as well and wont fail a VERIFY on destruction.
This commit is contained in:
parent
f532421c9c
commit
a955fd4156
3 changed files with 11 additions and 0 deletions
|
@ -116,6 +116,11 @@ public:
|
||||||
m_next_byte.clear();
|
m_next_byte.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool handle_any_error() override
|
||||||
|
{
|
||||||
|
return m_stream.handle_any_error() || Stream::handle_any_error();
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Optional<u8> m_next_byte;
|
Optional<u8> m_next_byte;
|
||||||
size_t m_bit_offset { 0 };
|
size_t m_bit_offset { 0 };
|
||||||
|
|
|
@ -321,6 +321,11 @@ bool DeflateDecompressor::discard_or_error(size_t count)
|
||||||
|
|
||||||
bool DeflateDecompressor::unreliable_eof() const { return m_state == State::Idle && m_read_final_bock; }
|
bool DeflateDecompressor::unreliable_eof() const { return m_state == State::Idle && m_read_final_bock; }
|
||||||
|
|
||||||
|
bool DeflateDecompressor::handle_any_error()
|
||||||
|
{
|
||||||
|
return m_input_stream.handle_any_error() || Stream::handle_any_error();
|
||||||
|
}
|
||||||
|
|
||||||
Optional<ByteBuffer> DeflateDecompressor::decompress_all(ReadonlyBytes bytes)
|
Optional<ByteBuffer> DeflateDecompressor::decompress_all(ReadonlyBytes bytes)
|
||||||
{
|
{
|
||||||
InputMemoryStream memory_stream { bytes };
|
InputMemoryStream memory_stream { bytes };
|
||||||
|
|
|
@ -102,6 +102,7 @@ public:
|
||||||
bool discard_or_error(size_t) override;
|
bool discard_or_error(size_t) override;
|
||||||
|
|
||||||
bool unreliable_eof() const override;
|
bool unreliable_eof() const override;
|
||||||
|
bool handle_any_error() override;
|
||||||
|
|
||||||
static Optional<ByteBuffer> decompress_all(ReadonlyBytes);
|
static Optional<ByteBuffer> decompress_all(ReadonlyBytes);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue