diff options
author | Sebastien Hertz <shertz@google.com> | 2014-06-05 10:15:45 +0200 |
---|---|---|
committer | Sebastien Hertz <shertz@google.com> | 2014-06-05 11:36:46 +0200 |
commit | 4206eb5d86d3a2406361e59b2018152b2485cced (patch) | |
tree | a83b9f33af46af127dc0c2b781b2b2d505f27502 /runtime/mirror | |
parent | fbc3e0baa16f265a5dbc99a38383b4dbc41b04a8 (diff) | |
download | art-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.cc | 5 |
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); } |