From 792f0f7f2e107fe6edee175ddf0b08135a355e7c Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Mon, 26 Mar 2012 14:21:49 +0000 Subject: BufferManager no longer owns buffers, only register them --- src/buffer_manager.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/buffer_manager.cc') 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); + 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, -- cgit v1.2.3