diff options
Diffstat (limited to 'lldb/source/Target/ExecutionContext.cpp')
-rw-r--r-- | lldb/source/Target/ExecutionContext.cpp | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/lldb/source/Target/ExecutionContext.cpp b/lldb/source/Target/ExecutionContext.cpp index ae3fc20d028..9ace4c93b17 100644 --- a/lldb/source/Target/ExecutionContext.cpp +++ b/lldb/source/Target/ExecutionContext.cpp @@ -815,22 +815,20 @@ lldb::StackFrameSP ExecutionContextRef::GetFrameSP () const { lldb::StackFrameSP frame_sp (m_frame_wp.lock()); - if (!frame_sp && m_stack_id.IsValid()) + if (frame_sp) { - lldb::ThreadSP thread_sp (GetThreadSP()); - if (thread_sp) - { - frame_sp = thread_sp->GetFrameWithStackID (m_stack_id); - m_frame_wp = frame_sp; - } - else - { - // If the thread that this frame was supposed to belong to is not valid, then - // return a NULL frame_sp. - frame_sp.reset(); - } + lldb::ThreadSP frame_thread_sp(frame_sp->GetThread()); + if (frame_thread_sp && frame_thread_sp->IsValid()) + return frame_sp; + } + lldb::ThreadSP thread_sp (GetThreadSP()); + if (thread_sp && thread_sp->IsValid()) + { + frame_sp = thread_sp->GetFrameWithStackID (m_stack_id); + m_frame_wp = frame_sp; + return frame_sp; } - return frame_sp; + return lldb::StackFrameSP(); } ExecutionContext |