Don't cache the public stop reason, since it can change as plan completion gets processed. That means GetStopReason needs to return a shared pointer, not a pointer to the thread's cached version. Also allow the thread plans to get and set the thread private stop reason - that is usually more appropriate for the logic the thread plans need to do.

llvm-svn: 116892
This commit is contained in:
Jim Ingham
2010-10-20 00:39:53 +00:00
parent 20f7ab72b1
commit b15bfc753c
15 changed files with 78 additions and 152 deletions

View File

@@ -110,9 +110,9 @@ ThreadPlanTestCondition::ShouldStop (Event *event_ptr)
Process::ProcessEventData *new_data = new Process::ProcessEventData (m_thread.GetProcess().GetSP(), eStateStopped);
event_ptr->SetData(new_data);
event_ptr->SetType(Process::eBroadcastBitStateChanged);
m_thread.SetStopInfo(StopInfo::CreateStopReasonWithBreakpointSiteID (m_thread,
m_break_loc_sp->GetBreakpointSite()->GetID(),
m_did_stop));
SetStopInfo(StopInfo::CreateStopReasonWithBreakpointSiteID (m_thread,
m_break_loc_sp->GetBreakpointSite()->GetID(),
m_did_stop));
if (m_did_stop)
{
Process::ProcessEventData::SetRestartedInEvent (event_ptr, false);