diff options
author | Jim Ingham <jingham@apple.com> | 2010-10-20 00:39:53 +0000 |
---|---|---|
committer | Jim Ingham <jingham@apple.com> | 2010-10-20 00:39:53 +0000 |
commit | b15bfc753c67f7af5eee131da04f007fd5af91fb (patch) | |
tree | 033d69708f181695d5030ea293a62186510ec6fe /lldb/source/Target/ThreadPlanStepOut.cpp | |
parent | 20f7ab72b1043fa288c5471dc846581d3a33d9ea (diff) | |
download | llvm-b15bfc753c67f7af5eee131da04f007fd5af91fb.zip llvm-b15bfc753c67f7af5eee131da04f007fd5af91fb.tar.gz llvm-b15bfc753c67f7af5eee131da04f007fd5af91fb.tar.bz2 |
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
Diffstat (limited to 'lldb/source/Target/ThreadPlanStepOut.cpp')
-rw-r--r-- | lldb/source/Target/ThreadPlanStepOut.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lldb/source/Target/ThreadPlanStepOut.cpp b/lldb/source/Target/ThreadPlanStepOut.cpp index 5d29134..b37c4a5 100644 --- a/lldb/source/Target/ThreadPlanStepOut.cpp +++ b/lldb/source/Target/ThreadPlanStepOut.cpp @@ -104,16 +104,16 @@ ThreadPlanStepOut::PlanExplainsStop () { // We don't explain signals or breakpoints (breakpoints that handle stepping in or // out will be handled by a child plan. - StopInfo *stop_info = m_thread.GetStopInfo(); - if (stop_info) + StopInfoSP stop_info_sp = GetPrivateStopReason(); + if (stop_info_sp) { - StopReason reason = stop_info->GetStopReason(); + StopReason reason = stop_info_sp->GetStopReason(); switch (reason) { case eStopReasonBreakpoint: { // If this is OUR breakpoint, we're fine, otherwise we don't know why this happened... - BreakpointSiteSP site_sp (m_thread.GetProcess().GetBreakpointSiteList().FindByID (stop_info->GetValue())); + BreakpointSiteSP site_sp (m_thread.GetProcess().GetBreakpointSiteList().FindByID (stop_info_sp->GetValue())); if (site_sp && site_sp->IsBreakpointAtThisSite (m_return_bp_id)) { // If there was only one owner, then we're done. But if we also hit some |