From 873b79b8675d0c8eca6055ae8a874fe52b033c28 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Tue, 7 Apr 2020 23:06:59 +0200 Subject: [PATCH] Don't access reference to a vector after pop_back This is undefined behavior. Found by asan's detect_container_overflow. --- lldb/source/Target/ThreadPlanStack.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lldb/source/Target/ThreadPlanStack.cpp b/lldb/source/Target/ThreadPlanStack.cpp index 44e47f385a82..c51946aae71c 100644 --- a/lldb/source/Target/ThreadPlanStack.cpp +++ b/lldb/source/Target/ThreadPlanStack.cpp @@ -156,7 +156,7 @@ void ThreadPlanStack::PushPlan(lldb::ThreadPlanSP new_plan_sp) { lldb::ThreadPlanSP ThreadPlanStack::PopPlan() { assert(m_plans.size() > 1 && "Can't pop the base thread plan"); - lldb::ThreadPlanSP &plan_sp = m_plans.back(); + lldb::ThreadPlanSP plan_sp = std::move(m_plans.back()); m_completed_plans.push_back(plan_sp); plan_sp->WillPop(); m_plans.pop_back(); @@ -166,7 +166,7 @@ lldb::ThreadPlanSP ThreadPlanStack::PopPlan() { lldb::ThreadPlanSP ThreadPlanStack::DiscardPlan() { assert(m_plans.size() > 1 && "Can't discard the base thread plan"); - lldb::ThreadPlanSP &plan_sp = m_plans.back(); + lldb::ThreadPlanSP plan_sp = std::move(m_plans.back()); m_discarded_plans.push_back(plan_sp); plan_sp->WillPop(); m_plans.pop_back(); -- 2.34.1