File tree Expand file tree Collapse file tree 3 files changed +13
-4
lines changed
Userland/Applications/HexEditor Expand file tree Collapse file tree 3 files changed +13
-4
lines changed Original file line number Diff line number Diff line change @@ -70,10 +70,18 @@ bool HexDocumentMemory::write_to_file(NonnullRefPtr<Core::File> file)
70
70
return true ;
71
71
}
72
72
73
+ ErrorOr<NonnullOwnPtr<HexDocumentFile>> HexDocumentFile::create (NonnullRefPtr<Core::File> file)
74
+ {
75
+ auto document = TRY (adopt_nonnull_own_or_enomem (new HexDocumentFile (move (file))));
76
+ // FIXME: Remove this hackery
77
+ document->set_file (move (document->m_file ));
78
+
79
+ return document;
80
+ }
81
+
73
82
HexDocumentFile::HexDocumentFile (NonnullRefPtr<Core::File> file)
74
83
: m_file(file)
75
84
{
76
- set_file (file);
77
85
}
78
86
79
87
void HexDocumentFile::write_to_file ()
Original file line number Diff line number Diff line change @@ -58,7 +58,7 @@ class HexDocumentMemory final : public HexDocument {
58
58
59
59
class HexDocumentFile final : public HexDocument {
60
60
public:
61
- explicit HexDocumentFile (NonnullRefPtr<Core::File> file);
61
+ static ErrorOr<NonnullOwnPtr< HexDocumentFile>> create (NonnullRefPtr<Core::File> file);
62
62
virtual ~HexDocumentFile () = default ;
63
63
64
64
HexDocumentFile (HexDocumentFile&&) = default ;
@@ -75,6 +75,7 @@ class HexDocumentFile final : public HexDocument {
75
75
void clear_changes () override ;
76
76
77
77
private:
78
+ explicit HexDocumentFile (NonnullRefPtr<Core::File> file);
78
79
void ensure_position_in_buffer (size_t position);
79
80
80
81
NonnullRefPtr<Core::File> m_file;
Original file line number Diff line number Diff line change @@ -65,7 +65,7 @@ ErrorOr<void> HexEditor::open_new_file(size_t size)
65
65
66
66
void HexEditor::open_file (NonnullRefPtr<Core::File> file)
67
67
{
68
- m_document = make< HexDocumentFile>( file);
68
+ m_document = HexDocumentFile::create ( move ( file)). release_value_but_fixme_should_propagate_errors ( );
69
69
set_content_length (m_document->size ());
70
70
m_position = 0 ;
71
71
m_cursor_at_low_nibble = false ;
@@ -146,7 +146,7 @@ bool HexEditor::save_as(NonnullRefPtr<Core::File> new_file)
146
146
auto & memory_document = static_cast <HexDocumentMemory&>(*m_document);
147
147
if (!memory_document.write_to_file (new_file))
148
148
return false ;
149
- m_document = make< HexDocumentFile>( new_file);
149
+ m_document = HexDocumentFile::create ( move ( new_file)). release_value_but_fixme_should_propagate_errors ( );
150
150
}
151
151
152
152
update ();
You can’t perform that action at this time.
0 commit comments