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

Reply via email to