summaryrefslogtreecommitdiff
path: root/src/buffer_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2021-05-28 17:03:06 +1000
committerMaxime Coste <mawww@kakoune.org>2021-05-28 17:03:41 +1000
commite4a23a64faf56b5822fee13d976e038174408238 (patch)
tree16f2198e342de7e1237b98aa5795fe80114632e8 /src/buffer_manager.cc
parent38f85706ffabe33734a6759a3b19405b755fffb8 (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.cc10
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();
}