From 1c62e41b26c2fb28f1065aacb6f1d13672911904 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 1 Nov 2016 22:49:35 -0400 Subject: [PATCH] GapBuffer takes separate buffer_size and size parameters --- src/core/Buffer.cc | 1 + src/core/GapBuffer.cc | 8 +++++--- src/core/GapBuffer.h | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/core/Buffer.cc b/src/core/Buffer.cc index 8d8a523..d8f1c08 100644 --- a/src/core/Buffer.cc +++ b/src/core/Buffer.cc @@ -57,6 +57,7 @@ bool Buffer::load_from_file(const char * filename) size_t loaded_size; text_loader.load_buffer(buffer, file_size, &loaded_size); + m_gap_buffer = std::make_shared(buffer, buffer_size, loaded_size); m_eol_at_eof = text_loader.get_eol_at_eof(); return true; diff --git a/src/core/GapBuffer.cc b/src/core/GapBuffer.cc index bcfdde3..1686bc2 100644 --- a/src/core/GapBuffer.cc +++ b/src/core/GapBuffer.cc @@ -4,16 +4,18 @@ GapBuffer::GapBuffer() { m_buffer = (uint8_t *)System::alloc_pages(1u); - m_size = System::page_size; + m_buffer_size = System::page_size; + m_size = 0u; } -GapBuffer::GapBuffer(uint8_t * buffer, size_t size) +GapBuffer::GapBuffer(uint8_t * buffer, size_t buffer_size, size_t size) { m_buffer = buffer; + m_buffer_size = buffer_size; m_size = size; } GapBuffer::~GapBuffer() { - System::free_pages(m_buffer, m_size >> System::page_size_log); + System::free_pages(m_buffer, m_buffer_size >> System::page_size_log); } diff --git a/src/core/GapBuffer.h b/src/core/GapBuffer.h index 62643ed..6f65568 100644 --- a/src/core/GapBuffer.h +++ b/src/core/GapBuffer.h @@ -8,11 +8,12 @@ class GapBuffer { public: GapBuffer(); - GapBuffer(uint8_t * buffer, size_t size); + GapBuffer(uint8_t * buffer, size_t buffer_size, size_t size); ~GapBuffer(); protected: uint8_t * m_buffer; + size_t m_buffer_size; size_t m_size; };