From 9b97dc73dcdbabe554cddea5e9292f149cfbe5e6 Mon Sep 17 00:00:00 2001 From: Gabriel Ebner Date: Thu, 1 Dec 2016 09:07:15 -0500 Subject: [PATCH] fix(library/task_queue): do not keep references to cancelled task_results in the exception We store this exception in the task_result itself, which creates a reference cycle. --- src/library/task_queue.cpp | 3 +-- src/library/task_queue.h | 3 --- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/library/task_queue.cpp b/src/library/task_queue.cpp index de77722e54..202835ad06 100644 --- a/src/library/task_queue.cpp +++ b/src/library/task_queue.cpp @@ -72,8 +72,7 @@ task_queue & get_global_task_queue() { return *g_tq; } -task_cancellation_exception::task_cancellation_exception(generic_task_result const & cancelled_task) : - m_cancelled_task(cancelled_task) { +task_cancellation_exception::task_cancellation_exception(generic_task_result const & cancelled_task) { std::ostringstream out; if (cancelled_task) { out << "task cancelled: " << cancelled_task.description(); diff --git a/src/library/task_queue.h b/src/library/task_queue.h index 21b80ed2ff..849521bb93 100644 --- a/src/library/task_queue.h +++ b/src/library/task_queue.h @@ -212,14 +212,11 @@ task_result mk_pure_task_result(T const & t, std::string const & desc) { } class task_cancellation_exception : public std::exception { - generic_task_result m_cancelled_task; std::string m_msg; public: task_cancellation_exception() : task_cancellation_exception(generic_task_result()) {} task_cancellation_exception(generic_task_result const & cancelled_task); char const * what() const noexcept override; - - generic_task_result get_cancelled_task() const { return m_cancelled_task; } }; class task_queue {