summaryrefslogtreecommitdiff
path: root/src/stack.cc
diff options
context:
space:
mode:
author jeffhao <jeffhao@google.com> 2013-01-02 18:13:42 -0800
committer jeffhao <jeffhao@google.com> 2013-01-03 14:40:36 -0800
commit6641ea12b98dda9ec45d29f20e43f85698b88a02 (patch)
tree1ffeecc0d83c3ec6158bcdbaf8851e716f24f2d7 /src/stack.cc
parent1d6df8edb5b177bd24d692e1fa854272af394d0a (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.cc4
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();