Fix SEGV when allocation does not fail in stack trace building
Change-Id: Ic01f95d4b4b90b38510c448b05d2efbac95d9c7c
diff --git a/src/thread.cc b/src/thread.cc
index 4a8381d..82ee631 100644
--- a/src/thread.cc
+++ b/src/thread.cc
@@ -1074,7 +1074,7 @@
}
#ifdef MOVING_GARBAGE_COLLECTOR
// Re-read after potential GC
- method_trace = Decode<ObjectArray<Object>*>(ts.Env(), local_ref_);
+ method_trace_ = Decode<ObjectArray<Object>*>(ts.Env(), local_ref_);
#endif
// Save PC trace in last element of method trace, also places it into the
// object graph.
@@ -1210,12 +1210,11 @@
// Build internal stack trace
BuildInternalStackTraceVisitor build_trace_visitor(depth);
- if (build_trace_visitor.Init(skip_depth, ts)) {
+ if (!build_trace_visitor.Init(skip_depth, ts)) {
return NULL; // Allocation failed
- } else {
- WalkStack(&build_trace_visitor);
- return build_trace_visitor.GetInternalStackTrace();
}
+ WalkStack(&build_trace_visitor);
+ return build_trace_visitor.GetInternalStackTrace();
}
jobjectArray Thread::InternalStackTraceToStackTraceElementArray(JNIEnv* env, jobject internal,