HexEditor: Propagate errors from HexDocumentFile::set_title()

This commit is contained in:
Lucas CHOLLET 2023-01-14 22:11:56 -05:00 committed by Andrew Kaster
parent a2dca2b762
commit 689b3c2c26
3 changed files with 6 additions and 5 deletions

View file

@ -73,7 +73,7 @@ ErrorOr<NonnullOwnPtr<HexDocumentFile>> HexDocumentFile::create(NonnullOwnPtr<Co
{
auto document = TRY(adopt_nonnull_own_or_enomem(new HexDocumentFile(move(file))));
// FIXME: Remove this hackery
document->set_file(move(document->m_file));
TRY(document->set_file(move(document->m_file)));
return document;
}
@ -150,7 +150,7 @@ void HexDocumentFile::clear_changes()
m_changes.clear();
}
void HexDocumentFile::set_file(NonnullOwnPtr<Core::Stream::File> file)
ErrorOr<void> HexDocumentFile::set_file(NonnullOwnPtr<Core::Stream::File> file)
{
m_file = move(file);
@ -159,11 +159,12 @@ void HexDocumentFile::set_file(NonnullOwnPtr<Core::Stream::File> file)
else
m_file_size = result.value();
m_file->seek(0, SeekMode::SetPosition).release_value_but_fixme_should_propagate_errors();
TRY(m_file->seek(0, SeekMode::SetPosition));
clear_changes();
// make sure the next get operation triggers a read
m_buffer_file_pos = m_file_size + 1;
return {};
}
NonnullOwnPtr<Core::Stream::File> const& HexDocumentFile::file() const

View file

@ -64,7 +64,7 @@ public:
HexDocumentFile(HexDocumentFile&&) = default;
HexDocumentFile(HexDocumentFile const&) = delete;
void set_file(NonnullOwnPtr<Core::Stream::File> file);
ErrorOr<void> set_file(NonnullOwnPtr<Core::Stream::File> file);
NonnullOwnPtr<Core::Stream::File> const& file() const;
ErrorOr<void> write_to_file();
ErrorOr<void> write_to_file(Core::Stream::File& file);

View file

@ -141,7 +141,7 @@ ErrorOr<void> HexEditor::save_as(NonnullOwnPtr<Core::Stream::File> new_file)
if (m_document->type() == HexDocument::Type::File) {
auto& file_document = static_cast<HexDocumentFile&>(*m_document);
TRY(file_document.write_to_file(*new_file));
file_document.set_file(move(new_file));
TRY(file_document.set_file(move(new_file)));
} else {
auto& memory_document = static_cast<HexDocumentMemory&>(*m_document);
TRY(memory_document.write_to_file(*new_file));