From e062a07a97368db29bfc5eea1675bdcedf5c6d20 Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Sat, 9 Jan 2021 14:40:17 -0800 Subject: [PATCH] Revert "Stop using unique_ptr to store histories" This reverts commit 6f91195f403c9e50f2fa44baab6e3bfad19c44ce. This triggered ASan complaints due to leaks. --- src/history.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/history.cpp b/src/history.cpp index 9ae8d8886..830d1a2d4 100644 --- a/src/history.cpp +++ b/src/history.cpp @@ -1481,8 +1481,8 @@ history_item_t history_t::item_at_index(size_t idx) { return impl()->item_at_ind size_t history_t::size() { return impl()->size(); } -/// The set of all histories. These are deliberately leaked to avoid shutdown dtors. -static owning_lock> s_histories; +/// The set of all histories. +static owning_lock>> s_histories; void history_save_all() { auto histories = s_histories.acquire(); @@ -1492,13 +1492,13 @@ void history_save_all() { } history_t &history_t::history_with_name(const wcstring &name) { - // Return a history for the given name, creating it if necessary. + // Return a history for the given name, creating it if necessary // Note that histories are currently never deleted, so we can return a reference to them without - // using something like shared_ptr. + // using something like shared_ptr auto hs = s_histories.acquire(); - history_t *&hist = (*hs)[name]; + std::unique_ptr &hist = (*hs)[name]; if (!hist) { - hist = new history_t(name); + hist = make_unique(name); } return *hist; }