From 845dee36ba4161df153ba05009cea615e20eda5a Mon Sep 17 00:00:00 2001 From: jimingham Date: Wed, 3 Jul 2024 10:45:20 -0700 Subject: SBThread::StepInstruction shouldn't discard other plans (#97493) This was just a typo, none of the external execution control functions should discard other plans. In particular, it means if you stop in a hand-called function and step an instruction, the function call thread plan gets unshipped, popping all the function call frames. I also added a test that asserts the correct behavior. I tested all the stepping operations even though only StepInstruction was wrong. --- lldb/source/API/SBThread.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lldb/source/API/SBThread.cpp') diff --git a/lldb/source/API/SBThread.cpp b/lldb/source/API/SBThread.cpp index ac3e2cd..5364336 100644 --- a/lldb/source/API/SBThread.cpp +++ b/lldb/source/API/SBThread.cpp @@ -722,7 +722,7 @@ void SBThread::StepInstruction(bool step_over, SBError &error) { Thread *thread = exe_ctx.GetThreadPtr(); Status new_plan_status; ThreadPlanSP new_plan_sp(thread->QueueThreadPlanForStepSingleInstruction( - step_over, true, true, new_plan_status)); + step_over, false, true, new_plan_status)); if (new_plan_status.Success()) error = ResumeNewPlan(exe_ctx, new_plan_sp.get()); -- cgit v1.1