From 9999e5698d50b384eb95181ef06db4cc99c90bb2 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Wed, 10 Apr 2013 18:54:01 +0200 Subject: Use the buffer manager to delete buffer, throw when a client is inserting --- src/buffer_manager.cc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/buffer_manager.cc') diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc index 16ba65cf..37bef1bb 100644 --- a/src/buffer_manager.cc +++ b/src/buffer_manager.cc @@ -32,6 +32,19 @@ void BufferManager::register_buffer(Buffer& buffer) } void BufferManager::unregister_buffer(Buffer& buffer) +{ + for (auto it = m_buffers.begin(); it != m_buffers.end(); ++it) + { + if (*it == &buffer) + { + m_buffers.erase(it); + return; + } + } + kak_assert(false); +} + +void BufferManager::delete_buffer(Buffer& buffer) { for (auto it = m_buffers.begin(); it != m_buffers.end(); ++it) { @@ -39,13 +52,19 @@ void BufferManager::unregister_buffer(Buffer& buffer) { if (ClientManager::has_instance()) ClientManager::instance().ensure_no_client_uses_buffer(buffer); - m_buffers.erase(it); + delete it->get(); return; } } kak_assert(false); } +void BufferManager::delete_buffer_if_exists(const String& name) +{ + if (Buffer* buf = get_buffer_ifp(name)) + delete_buffer(*buf); +} + Buffer* BufferManager::get_buffer_ifp(const String& name) { for (auto& buf : m_buffers) -- cgit v1.2.3