diff options
| author | Ed Maste <emaste@FreeBSD.org> | 2013-12-03 18:51:59 +0000 | 
|---|---|---|
| committer | Ed Maste <emaste@FreeBSD.org> | 2013-12-03 18:51:59 +0000 | 
| commit | 86758c718870f701bc69c1ca05495305ed1c5b85 (patch) | |
| tree | b2051e4e4856cc58ac7e2d20242b870b4f355ca1 /source/Target/StackFrameList.cpp | |
| parent | f21a844f60ae6c74fcf1fddca32461acce3c1ee0 (diff) | |
Notes
Diffstat (limited to 'source/Target/StackFrameList.cpp')
| -rw-r--r-- | source/Target/StackFrameList.cpp | 19 | 
1 files changed, 11 insertions, 8 deletions
diff --git a/source/Target/StackFrameList.cpp b/source/Target/StackFrameList.cpp index eaac3613c93d6..631a77bd4951f 100644 --- a/source/Target/StackFrameList.cpp +++ b/source/Target/StackFrameList.cpp @@ -301,7 +301,7 @@ StackFrameList::GetFramesUpTo(uint32_t end_idx)                      if (reg_ctx_sp)                      { -                        const bool success = unwinder->GetFrameInfoAtIndex(idx, cfa, pc); +                        const bool success = unwinder && unwinder->GetFrameInfoAtIndex(idx, cfa, pc);                          // There shouldn't be any way not to get the frame info for frame 0.                          // But if the unwinder can't make one, lets make one by hand with the                          // SP as the CFA and see if that gets any further. @@ -329,7 +329,7 @@ StackFrameList::GetFramesUpTo(uint32_t end_idx)              }              else              { -                const bool success = unwinder->GetFrameInfoAtIndex(idx, cfa, pc); +                const bool success = unwinder && unwinder->GetFrameInfoAtIndex(idx, cfa, pc);                  if (!success)                  {                      // We've gotten to the end of the stack. @@ -451,14 +451,17 @@ StackFrameList::GetFramesUpTo(uint32_t end_idx)      {          if (end_idx < m_concrete_frames_fetched)              return; -             -        uint32_t num_frames = unwinder->GetFramesUpTo(end_idx); -        if (num_frames <= end_idx + 1) + +        if (unwinder)          { -            //Done unwinding. -            m_concrete_frames_fetched = UINT32_MAX; +            uint32_t num_frames = unwinder->GetFramesUpTo(end_idx); +            if (num_frames <= end_idx + 1) +            { +                //Done unwinding. +                m_concrete_frames_fetched = UINT32_MAX; +            } +            m_frames.resize(num_frames);          } -        m_frames.resize(num_frames);      }  }  | 
