summaryrefslogtreecommitdiffstats
path: root/runtime/mirror
diff options
context:
space:
mode:
authorSebastien Hertz <shertz@google.com>2014-06-05 10:15:45 +0200
committerSebastien Hertz <shertz@google.com>2014-06-05 11:36:46 +0200
commit4206eb5d86d3a2406361e59b2018152b2485cced (patch)
treea83b9f33af46af127dc0c2b781b2b2d505f27502 /runtime/mirror
parentfbc3e0baa16f265a5dbc99a38383b4dbc41b04a8 (diff)
downloadart-4206eb5d86d3a2406361e59b2018152b2485cced.zip
art-4206eb5d86d3a2406361e59b2018152b2485cced.tar.gz
art-4206eb5d86d3a2406361e59b2018152b2485cced.tar.bz2
Fix crash in JDWP ReferenceType.SourceFile command
Updates Dbg::GetSourceFile to return ABSENT_INFORMATION error code when Class::GetSourceFile returns nullptr. This happens if the class has no source file information. Updates Class:GetSourceFile to return nullptr for classes which have no ClassDef item like generated classes. This allows to remove the IsProxyClass test from Dbg::GetSourceFile. Adds this test in proxy_test. Bug: 15426710 Change-Id: I019da4ced83778d5264484c43b225f8b5c95632e
Diffstat (limited to 'runtime/mirror')
-rw-r--r--runtime/mirror/class.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/runtime/mirror/class.cc b/runtime/mirror/class.cc
index 4869b45..c3aac5e 100644
--- a/runtime/mirror/class.cc
+++ b/runtime/mirror/class.cc
@@ -771,7 +771,10 @@ const char* Class::GetSourceFile() {
std::string descriptor(GetDescriptor());
const DexFile& dex_file = GetDexFile();
const DexFile::ClassDef* dex_class_def = GetClassDef();
- CHECK(dex_class_def != nullptr) << "No class def for class " << PrettyClass(this);
+ if (dex_class_def == nullptr) {
+ // Generated classes have no class def.
+ return nullptr;
+ }
return dex_file.GetSourceFile(*dex_class_def);
}