Properly tolerate missing declaring source files

Broken in 228d6b8a4f0a21c1e9b2372c3104ce4ee19f65b4

(cherry picked from commit 7c6aca27dd2df58ac3d83a93ec5848e2b7d3159a)

Bug: 13575571
Bug: 12802375
Change-Id: Ia8a3196b15f8ed29810d0b6f09f81c7ae4e7480e
diff --git a/runtime/thread.cc b/runtime/thread.cc
index 7fd40c9..25418a9 100644
--- a/runtime/thread.cc
+++ b/runtime/thread.cc
@@ -1414,8 +1414,8 @@
     mirror::ArtMethod* method = down_cast<mirror::ArtMethod*>(method_trace->Get(i));
     MethodHelper mh(method);
     int32_t line_number;
-    SirtRef<mirror::String> class_name_object(soa.Self(), NULL);
-    SirtRef<mirror::String> source_name_object(soa.Self(), NULL);
+    SirtRef<mirror::String> class_name_object(soa.Self(), nullptr);
+    SirtRef<mirror::String> source_name_object(soa.Self(), nullptr);
     if (method->IsProxyMethod()) {
       line_number = -1;
       class_name_object.reset(method->GetDeclaringClass()->GetName());
@@ -1427,16 +1427,18 @@
       // Allocate element, potentially triggering GC
       // TODO: reuse class_name_object via Class::name_?
       const char* descriptor = mh.GetDeclaringClassDescriptor();
-      CHECK(descriptor != NULL);
+      CHECK(descriptor != nullptr);
       std::string class_name(PrettyDescriptor(descriptor));
       class_name_object.reset(mirror::String::AllocFromModifiedUtf8(soa.Self(), class_name.c_str()));
-      if (class_name_object.get() == NULL) {
-        return NULL;
+      if (class_name_object.get() == nullptr) {
+        return nullptr;
       }
       const char* source_file = mh.GetDeclaringClassSourceFile();
-      source_name_object.reset(mirror::String::AllocFromModifiedUtf8(soa.Self(), source_file));
-      if (source_name_object.get() == NULL) {
-        return NULL;
+      if (source_file != nullptr) {
+        source_name_object.reset(mirror::String::AllocFromModifiedUtf8(soa.Self(), source_file));
+        if (source_name_object.get() == nullptr) {
+          return nullptr;
+        }
       }
     }
     const char* method_name = mh.GetName();