diff --git a/src/exception_test.cc b/src/exception_test.cc
index adb32d1..22ae682 100644
--- a/src/exception_test.cc
+++ b/src/exception_test.cc
@@ -140,10 +140,13 @@
 
   JNIEnv* env = thread->GetJniEnv();
   jobject internal = thread->CreateInternalStackTrace(env);
+  ASSERT_TRUE(internal != NULL);
   jobjectArray ste_array = Thread::InternalStackTraceToStackTraceElementArray(env, internal);
+  ASSERT_TRUE(ste_array != NULL);
   ObjectArray<StackTraceElement>* trace_array =
       Decode<ObjectArray<StackTraceElement>*>(env, ste_array);
 
+  ASSERT_TRUE(trace_array != NULL);
   ASSERT_TRUE(trace_array->Get(0) != NULL);
   EXPECT_STREQ("ExceptionHandle",
                trace_array->Get(0)->GetDeclaringClass()->ToModifiedUtf8().c_str());
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,
