From 5bba01ca9cdd8c5ca84b475d305ee5e55dd82da3 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Fri, 22 Mar 2013 14:26:44 +0100 Subject: [PATCH] BufferManager notify the ClientManager when a buffer dies --- src/buffer_manager.cc | 3 +++ src/commands.cc | 1 - src/utils.hh | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc index d482f28a..0fae2a17 100644 --- a/src/buffer_manager.cc +++ b/src/buffer_manager.cc @@ -4,6 +4,7 @@ #include "buffer.hh" #include "exception.hh" #include "string.hh" +#include "client_manager.hh" namespace Kakoune { @@ -35,6 +36,8 @@ void BufferManager::unregister_buffer(Buffer& buffer) { if (*it == &buffer) { + if (ClientManager::has_instance()) + ClientManager::instance().ensure_no_client_uses_buffer(buffer); m_buffers.erase(it); return; } diff --git a/src/commands.cc b/src/commands.cc index d720359e..0baec150 100644 --- a/src/commands.cc +++ b/src/commands.cc @@ -234,7 +234,6 @@ void delete_buffer(const CommandParameters& params, Context& context) if (manager.count() == 1) throw runtime_error("buffer " + buffer.name() + " is the last one"); - ClientManager::instance().ensure_no_client_uses_buffer(buffer); delete &buffer; } diff --git a/src/utils.hh b/src/utils.hh index 6337bc24..0db71f40 100644 --- a/src/utils.hh +++ b/src/utils.hh @@ -33,6 +33,11 @@ public: ms_instance = nullptr; } + static bool has_instance() + { + return ms_instance != nullptr; + } + protected: Singleton() {