diff options
| author | 2013-01-02 18:13:42 -0800 | |
|---|---|---|
| committer | 2013-01-03 14:40:36 -0800 | |
| commit | 6641ea12b98dda9ec45d29f20e43f85698b88a02 (patch) | |
| tree | 1ffeecc0d83c3ec6158bcdbaf8851e716f24f2d7 /src/stack.cc | |
| parent | 1d6df8edb5b177bd24d692e1fa854272af394d0a (diff) | |
Fix stack walking when top frame has null method pointer.
Changed the do-while loop to just a while loop in the stack walk. This
fixes the case where the top frame has a null method pointer, which can
happen during instrumentation.
Change-Id: If7d67cd315d31bac4c1bbe31d6e385612b182935
Diffstat (limited to 'src/stack.cc')
| -rw-r--r-- | src/stack.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/stack.cc b/src/stack.cc index e962dec8b6..228f96d31d 100644 --- a/src/stack.cc +++ b/src/stack.cc @@ -221,7 +221,7 @@ void StackVisitor::WalkStack(bool include_transitions) { // Can't be both a shadow and a quick fragment. DCHECK(current_fragment->GetTopShadowFrame() == NULL); AbstractMethod* method = *cur_quick_frame_; - do { + while (method != NULL) { SanityCheckFrame(); bool should_continue = VisitFrame(); if (UNLIKELY(!should_continue)) { @@ -253,7 +253,7 @@ void StackVisitor::WalkStack(bool include_transitions) { cur_quick_frame_ = reinterpret_cast<AbstractMethod**>(next_frame); cur_depth_++; method = *cur_quick_frame_; - } while (method != NULL); + } } else if (cur_shadow_frame_ != NULL) { do { SanityCheckFrame(); |