Fix IncompatibleClassChangeError.
Before, we'd hit the end of FindClass and blow up because we don't expect a
pending exception.
Change-Id: Ia3ca89d2460782275c5217c31ce3b057d12d4fa6
diff --git a/src/class_linker.cc b/src/class_linker.cc
index c7006df..7225764 100644
--- a/src/class_linker.cc
+++ b/src/class_linker.cc
@@ -871,8 +871,8 @@
return NULL;
}
// Return the loaded class. No exceptions should be pending.
- CHECK(klass->IsResolved());
- CHECK(!self->IsExceptionPending());
+ CHECK(klass->IsResolved()) << descriptor;
+ CHECK(!self->IsExceptionPending()) << descriptor << " " << PrettyTypeOf(self->GetException());
return klass;
}
@@ -1848,13 +1848,10 @@
klass->GetVirtualMethodDuringLinking(i)->SetMethodIndex(i);
}
// Link interface method tables
- LinkInterfaceMethods(klass);
+ return LinkInterfaceMethods(klass);
} else {
- // Link virtual method tables
- LinkVirtualMethods(klass);
-
- // Link interface method tables
- LinkInterfaceMethods(klass);
+ // Link virtual and interface method tables
+ return LinkVirtualMethods(klass) && LinkInterfaceMethods(klass);
}
return true;
}