diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2013-04-10 18:54:01 +0200 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2013-04-10 18:54:01 +0200 |
| commit | 9999e5698d50b384eb95181ef06db4cc99c90bb2 (patch) | |
| tree | 2e1fb8eafc82fa4c662afd75c044589283c39ad2 /src/buffer_manager.cc | |
| parent | 441f9a69efc18630b4c508688ef403b0ed81b19d (diff) | |
Use the buffer manager to delete buffer, throw when a client is inserting
Diffstat (limited to 'src/buffer_manager.cc')
| -rw-r--r-- | src/buffer_manager.cc | 21 |
1 files changed, 20 insertions, 1 deletions
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 @@ -37,15 +37,34 @@ void BufferManager::unregister_buffer(Buffer& buffer) { 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) + { + if (*it == &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) |
