Do not add window pointing to deleted buffers in the free window list
Fixes #2975
This commit is contained in:
parent
9d52822702
commit
5888e23e02
|
@ -137,6 +137,7 @@ void ClientManager::remove_client(Client& client, bool graceful, int status)
|
||||||
|
|
||||||
WindowAndSelections ClientManager::get_free_window(Buffer& buffer)
|
WindowAndSelections ClientManager::get_free_window(Buffer& buffer)
|
||||||
{
|
{
|
||||||
|
kak_assert(contains(BufferManager::instance(), &buffer));
|
||||||
auto it = find_if(m_free_windows | reverse(),
|
auto it = find_if(m_free_windows | reverse(),
|
||||||
[&](const WindowAndSelections& ws)
|
[&](const WindowAndSelections& ws)
|
||||||
{ return &ws.window->buffer() == &buffer; });
|
{ return &ws.window->buffer() == &buffer; });
|
||||||
|
@ -153,6 +154,9 @@ WindowAndSelections ClientManager::get_free_window(Buffer& buffer)
|
||||||
|
|
||||||
void ClientManager::add_free_window(std::unique_ptr<Window>&& window, SelectionList selections)
|
void ClientManager::add_free_window(std::unique_ptr<Window>&& window, SelectionList selections)
|
||||||
{
|
{
|
||||||
|
if (not contains(BufferManager::instance(), &window->buffer()))
|
||||||
|
return;
|
||||||
|
|
||||||
window->clear_display_buffer();
|
window->clear_display_buffer();
|
||||||
m_free_windows.push_back({std::move(window), std::move(selections)});
|
m_free_windows.push_back({std::move(window), std::move(selections)});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user