diff options
| author | 2014-09-17 03:32:20 +0000 | |
|---|---|---|
| committer | 2014-09-17 03:32:21 +0000 | |
| commit | f031724abf4f215e1627ff837f87cad5d7a25165 (patch) | |
| tree | f694c441ce0748ead6ab1890e78dc853a12854c5 | |
| parent | a20b7b3ecf90bb761d7085403782721f2fb474c5 (diff) | |
| parent | 5cbcde2983d7cb95deb38d39784f03a7192b0061 (diff) | |
Merge "ART: Fix method verifier dumping"
| -rw-r--r-- | runtime/verifier/method_verifier.cc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/runtime/verifier/method_verifier.cc b/runtime/verifier/method_verifier.cc index 521a2ddc4b..f28d4883b2 100644 --- a/runtime/verifier/method_verifier.cc +++ b/runtime/verifier/method_verifier.cc @@ -311,9 +311,15 @@ MethodVerifier* MethodVerifier::VerifyMethodAndDump(Thread* self, std::ostream& verifier->Verify(); verifier->DumpFailures(os); os << verifier->info_messages_.str(); - verifier->Dump(os); - - return verifier; + // Only dump and return if no hard failures. Otherwise the verifier may be not fully initialized + // and querying any info is dangerous/can abort. + if (verifier->have_pending_hard_failure_) { + delete verifier; + return nullptr; + } else { + verifier->Dump(os); + return verifier; + } } MethodVerifier::MethodVerifier(Thread* self, |