diff options
| author | Maxime Coste <mawww@kakoune.org> | 2018-05-21 20:30:24 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2018-05-21 20:30:24 +1000 |
| commit | 56e2174cf6dad9c1e664877d27e3ca9c4ae2c512 (patch) | |
| tree | 6a890c673077b3d0a05b35aaa69cac6e92f92458 /src/buffer_manager.cc | |
| parent | d4e36958f851000be58c427517fbf65aee68bd84 (diff) | |
Do not reuse m_buffer_trash to store dying buffers in ~BufferManager
Doing that clears m_buffer_trash, deleting buffers contained there,
but we are not ready to have Buffer destructors running yet as we
did not clear the ClientManager, meaning we might have free windows
pointing to buffers in the buffer trash.
Diffstat (limited to 'src/buffer_manager.cc')
| -rw-r--r-- | src/buffer_manager.cc | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc index 4a6e779f..a26caa40 100644 --- a/src/buffer_manager.cc +++ b/src/buffer_manager.cc @@ -13,11 +13,10 @@ namespace Kakoune BufferManager::~BufferManager() { - // Move buffers to m_buffer_trash to avoid running BufClose - // hook while clearing m_buffers - m_buffer_trash = std::move(m_buffers); + // Move buffers to avoid running BufClose with buffers remaining in that list + BufferList buffers = std::move(m_buffers); - for (auto& buffer : m_buffer_trash) + for (auto& buffer : buffers) buffer->on_unregistered(); // Make sure not clients exists |
