AK: Make writability violation of FixedMemoryStream non-fatal

Writing to a read-only file is not a program-crashing error either, so
we just return the standard EBADFD (see write(2)) here.
This commit is contained in:
kleines Filmröllchen 2023-09-19 12:02:05 +02:00 committed by Tim Schumacher
parent bbeabe929b
commit 5b2496e522
Notes: sideshowbarker 2024-07-17 07:48:42 +09:00
2 changed files with 6 additions and 6 deletions

View file

@ -93,7 +93,11 @@ ErrorOr<size_t> FixedMemoryStream::seek(i64 offset, SeekMode seek_mode)
ErrorOr<size_t> FixedMemoryStream::write_some(ReadonlyBytes bytes)
{
VERIFY(m_writing_enabled);
// MemoryStream isn't based on file-descriptors, but since most other
// Stream implementations are, the interface specifies EBADF as the
// "we don't support this particular operation" error code.
if (!m_writing_enabled)
return Error::from_errno(EBADF);
// FIXME: Can this not error?
auto const nwritten = bytes.copy_trimmed_to(m_bytes.slice(m_offset));

View file

@ -190,11 +190,7 @@ TEST_CASE(fixed_memory_read_only)
TRY_OR_FAIL(stream.seek(0));
ReadonlyBytes buffer { some_words.characters_without_null_termination(), some_words.length() };
EXPECT_CRASH("Write protection assert", [&] {
(void)stream.write_some(buffer);
return Test::Crash::Failure::DidNotCrash;
});
EXPECT(stream.write_some(buffer).is_error());
EXPECT_EQ(TRY_OR_FAIL(stream.tell()), 0ull);
EXPECT(!stream.is_eof());
}