summaryrefslogtreecommitdiff
path: root/src/buffer_manager.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2018-02-18 14:50:24 +1100
committerMaxime Coste <mawww@kakoune.org>2018-02-18 14:50:24 +1100
commitd9cddf41f2d2cb41cb2f7b0fbe47ccdfdb942991 (patch)
treeb3b171cd83b7fd9b5bd2b7aba67c4818dff218a7 /src/buffer_manager.cc
parent10c6c59a26f2c2ffec81aeadeac079aeac0e32cf (diff)
BufferManager: Support missing ClientManager
Diffstat (limited to 'src/buffer_manager.cc')
-rw-r--r--src/buffer_manager.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc
index 0c9b052f..b0c01cff 100644
--- a/src/buffer_manager.cc
+++ b/src/buffer_manager.cc
@@ -21,7 +21,8 @@ BufferManager::~BufferManager()
buffer->on_unregistered();
// Make sure not clients exists
- ClientManager::instance().clear();
+ if (ClientManager::has_instance())
+ ClientManager::instance().clear();
}
Buffer* BufferManager::create_buffer(String name, Buffer::Flags flags,
@@ -55,7 +56,8 @@ void BufferManager::delete_buffer(Buffer& buffer)
m_buffer_trash.emplace_back(std::move(*it));
m_buffers.erase(it);
- ClientManager::instance().ensure_no_client_uses_buffer(buffer);
+ if (ClientManager::has_instance())
+ ClientManager::instance().ensure_no_client_uses_buffer(buffer);
buffer.on_unregistered();
}
@@ -105,8 +107,11 @@ void BufferManager::clear_buffer_trash()
{
// Do that again, to be tolerant in some corner cases, where a buffer is
// deleted during its creation
- ClientManager::instance().ensure_no_client_uses_buffer(*buffer);
- ClientManager::instance().clear_window_trash();
+ if (ClientManager::has_instance())
+ {
+ ClientManager::instance().ensure_no_client_uses_buffer(*buffer);
+ ClientManager::instance().clear_window_trash();
+ }
buffer.reset();
}