diff src/share/vm/classfile/verifier.cpp @ 1677:a5c9d63a187d

6964170: Verifier crashes Summary: Check if klassOop != NULL rather than klass_part != NULL Reviewed-by: kamg, never
author apangin
date Tue, 20 Jul 2010 08:41:42 -0700
parents 136b78722a08
children 7f0fdccac34f
line wrap: on
line diff
--- a/src/share/vm/classfile/verifier.cpp	Sat Jul 17 21:49:23 2010 -0700
+++ b/src/share/vm/classfile/verifier.cpp	Tue Jul 20 08:41:42 2010 -0700
@@ -1847,12 +1847,8 @@
   if (type == VerificationType::uninitialized_this_type()) {
     // The method must be an <init> method of either this class, or one of its
     // superclasses
-    klassOop oop = current_class()();
-    Klass* klass = oop->klass_part();
-    while (klass != NULL && ref_class_type.name() != klass->name()) {
-      klass = klass->super()->klass_part();
-    }
-    if (klass == NULL) {
+    if (ref_class_type.name() != current_class()->name() &&
+        !name_in_supers(ref_class_type.name(), current_class())) {
       verify_error(bci, "Bad <init> method call");
       return;
     }