diff options
| author | Maxime Coste <mawww@kakoune.org> | 2021-05-28 17:03:06 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2021-05-28 17:03:41 +1000 |
| commit | e4a23a64faf56b5822fee13d976e038174408238 (patch) | |
| tree | 16f2198e342de7e1237b98aa5795fe80114632e8 /src/buffer_manager.cc | |
| parent | 38f85706ffabe33734a6759a3b19405b755fffb8 (diff) | |
Support opening files bigger than 2 GiB
The real technical limit is with lines bigger than 2 GiB and buffers
with more than 2 Gi lines, refactor buffer loading to make it possible
to load those files.
Fix an overflow with the hash_data function at the same time
Diffstat (limited to 'src/buffer_manager.cc')
| -rw-r--r-- | src/buffer_manager.cc | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc index 8d17cc76..32d03fc1 100644 --- a/src/buffer_manager.cc +++ b/src/buffer_manager.cc @@ -24,8 +24,7 @@ BufferManager::~BufferManager() ClientManager::instance().clear(true); } -Buffer* BufferManager::create_buffer(String name, Buffer::Flags flags, - StringView data, timespec fs_timestamp) +Buffer* BufferManager::create_buffer(String name, Buffer::Flags flags, BufferLines lines, ByteOrderMark bom, EolFormat eolformat, FsStatus fs_status) { auto path = real_path(parse_filename(name)); for (auto& buf : m_buffers) @@ -35,7 +34,7 @@ Buffer* BufferManager::create_buffer(String name, Buffer::Flags flags, throw runtime_error{"buffer name is already in use"}; } - m_buffers.push_back(std::make_unique<Buffer>(std::move(name), flags, data, fs_timestamp)); + m_buffers.push_back(std::make_unique<Buffer>(std::move(name), flags, lines, bom, eolformat, fs_status)); auto* buffer = m_buffers.back().get(); buffer->on_registered(); @@ -84,8 +83,9 @@ Buffer& BufferManager::get_first_buffer() { if (all_of(m_buffers, [](auto& b) { return (b->flags() & Buffer::Flags::Debug); })) create_buffer("*scratch*", Buffer::Flags::None, - "*** this is a *scratch* buffer which won't be automatically saved ***\n" - "*** use it for notes or open a file buffer with the :edit command ***\n"); + {StringData::create({"*** this is a *scratch* buffer which won't be automatically saved ***\n"}), + StringData::create({"*** use it for notes or open a file buffer with the :edit command ***\n"})}, + ByteOrderMark::None, EolFormat::Lf, {InvalidTime, {}, {}}); return *m_buffers.back(); } |
