RunThreadPlan should set the plan to "not private" since it needs that,

and then reset it to the original value when done.

llvm-svn: 131498
This commit is contained in:
Jim Ingham 2011-05-17 22:24:54 +00:00
parent abffc991dc
commit 17e5c4e261
2 changed files with 9 additions and 2 deletions

View File

@ -508,7 +508,7 @@ ClangUserExpression::Execute (Stream &error_stream,
lldb::addr_t function_stack_pointer = static_cast<ThreadPlanCallFunction *>(call_plan_sp.get())->GetFunctionStackPointer();
// call_plan_sp->SetPrivate(true);
call_plan_sp->SetPrivate(true);
uint32_t single_thread_timeout_usec = 500000;

View File

@ -3226,6 +3226,13 @@ Process::RunThreadPlan (ExecutionContext &exe_ctx,
return eExecutionSetupError;
}
// We rely on the thread plan we are running returning "PlanCompleted" if when it successfully completes.
// For that to be true the plan can't be private - since private plans suppress themselves in the
// GetCompletedPlan call.
bool orig_plan_private = thread_plan_sp->GetPrivate();
thread_plan_sp->SetPrivate(false);
if (m_private_state.GetValue() != eStateStopped)
{
errors.Printf ("RunThreadPlan called while the private state was not stopped.");
@ -3390,7 +3397,7 @@ Process::RunThreadPlan (ExecutionContext &exe_ctx,
// Now mark this plan as private so it doesn't get reported as the stop reason
// after this point.
if (thread_plan_sp)
thread_plan_sp->SetPrivate (true);
thread_plan_sp->SetPrivate (orig_plan_private);
return_value = eExecutionCompleted;
}
else