diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-03-26 14:21:49 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-03-26 14:21:49 +0000 |
| commit | 792f0f7f2e107fe6edee175ddf0b08135a355e7c (patch) | |
| tree | 8eaef14cbe0f7c0d8ce3a08e8aa9a0d897e924ba /src/buffer_manager.cc | |
| parent | 3c798a4ee84238caa7df847f3d8cf31bf6b16fb0 (diff) | |
BufferManager no longer owns buffers, only register them
Diffstat (limited to 'src/buffer_manager.cc')
| -rw-r--r-- | src/buffer_manager.cc | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc index c3211f7c..d8f71861 100644 --- a/src/buffer_manager.cc +++ b/src/buffer_manager.cc @@ -2,7 +2,6 @@ #include "assert.hh" #include "buffer.hh" -#include "window.hh" #include "exception.hh" namespace Kakoune @@ -17,15 +16,18 @@ void BufferManager::register_buffer(Buffer* buffer) if (m_buffers.find(name) != m_buffers.end()) throw name_not_unique(); - m_buffers[name] = std::unique_ptr<Buffer>(buffer); + m_buffers[name] = buffer; } -void BufferManager::delete_buffer(Buffer* buffer) +void BufferManager::unregister_buffer(Buffer* buffer) { assert(buffer); auto buffer_it = m_buffers.find(buffer->name()); - assert(buffer_it->second.get() == buffer); - m_buffers.erase(buffer_it); + if (buffer_it != m_buffers.end()) + { + assert(buffer_it->second == buffer); + m_buffers.erase(buffer_it); + } } Buffer* BufferManager::get_buffer(const std::string& name) @@ -33,7 +35,7 @@ Buffer* BufferManager::get_buffer(const std::string& name) if (m_buffers.find(name) == m_buffers.end()) return nullptr; - return m_buffers[name].get(); + return m_buffers[name]; } CandidateList BufferManager::complete_buffername(const std::string& prefix, |
