mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-11 05:25:32 +03:00
AK+LibCompress: Break when seekback copying to a full CircularBuffer
Otherwise, we just end up infinitely looping while waiting for more space in the destination.
This commit is contained in:
parent
767fb01a8c
commit
b88c58b94c
Notes:
sideshowbarker
2024-07-16 21:55:16 +09:00
Author: https://github.com/timschumi Commit: https://github.com/SerenityOS/serenity/commit/b88c58b94c Pull-request: https://github.com/SerenityOS/serenity/pull/18180 Reviewed-by: https://github.com/gmta Reviewed-by: https://github.com/trflynn89 ✅
@ -213,6 +213,9 @@ ErrorOr<size_t> CircularBuffer::copy_from_seekback(size_t distance, size_t lengt
|
|||||||
|
|
||||||
auto remaining_length = length;
|
auto remaining_length = length;
|
||||||
while (remaining_length > 0) {
|
while (remaining_length > 0) {
|
||||||
|
if (empty_space() == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
auto next_span = next_read_span_with_seekback(distance);
|
auto next_span = next_read_span_with_seekback(distance);
|
||||||
if (next_span.size() == 0)
|
if (next_span.size() == 0)
|
||||||
break;
|
break;
|
||||||
|
@ -208,7 +208,10 @@ ErrorOr<bool> DeflateDecompressor::CompressedBlock::try_read_more()
|
|||||||
m_decompressor.m_output_buffer.write({ &byte, sizeof(byte) });
|
m_decompressor.m_output_buffer.write({ &byte, sizeof(byte) });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user