diff --git a/Userland/Applications/HexEditor/HexDocument.cpp b/Userland/Applications/HexEditor/HexDocument.cpp index ce98bc65af..e7e49c6c19 100644 --- a/Userland/Applications/HexEditor/HexDocument.cpp +++ b/Userland/Applications/HexEditor/HexDocument.cpp @@ -72,8 +72,7 @@ ErrorOr HexDocumentMemory::write_to_file(Core::Stream::File& file) ErrorOr> HexDocumentFile::create(NonnullOwnPtr file) { auto document = TRY(adopt_nonnull_own_or_enomem(new HexDocumentFile(move(file)))); - // FIXME: Remove this hackery - TRY(document->set_file(move(document->m_file))); + TRY(document->initialize_internal_state()); return document; } @@ -153,7 +152,12 @@ void HexDocumentFile::clear_changes() ErrorOr HexDocumentFile::set_file(NonnullOwnPtr file) { m_file = move(file); + TRY(initialize_internal_state()); + return {}; +} +ErrorOr HexDocumentFile::initialize_internal_state() +{ if (auto result = m_file->seek(0, SeekMode::FromEndPosition); result.is_error()) m_file_size = 0; else diff --git a/Userland/Applications/HexEditor/HexDocument.h b/Userland/Applications/HexEditor/HexDocument.h index 3f19b8f3e6..6a5f7943cc 100644 --- a/Userland/Applications/HexEditor/HexDocument.h +++ b/Userland/Applications/HexEditor/HexDocument.h @@ -76,6 +76,8 @@ public: private: explicit HexDocumentFile(NonnullOwnPtr file); + ErrorOr initialize_internal_state(); + void ensure_position_in_buffer(size_t position); NonnullOwnPtr m_file;