Author: Benjamin Kramer Date: 2020-04-07T23:10:58+02:00 New Revision: 873b79b8675d0c8eca6055ae8a874fe52b033c28
URL: https://github.com/llvm/llvm-project/commit/873b79b8675d0c8eca6055ae8a874fe52b033c28 DIFF: https://github.com/llvm/llvm-project/commit/873b79b8675d0c8eca6055ae8a874fe52b033c28.diff LOG: Don't access reference to a vector after pop_back This is undefined behavior. Found by asan's detect_container_overflow. Added: Modified: lldb/source/Target/ThreadPlanStack.cpp Removed: ################################################################################ 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(); _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits