diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 99a6b9d3f84d25e1ef4bb233648b0d0b99fcd69d..b92b98eed531c0ce43074d858565ac079cce2890 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,9 @@
+2002-02-13  Todd Stock  <toddastock@yahoo.com>
+
+	Fix for PR libgcj/5671:
+	* verify.cc (state::merge): Handle case where we're merging
+	against an interface.
+
 2002-02-12  Tom Tromey  <tromey@redhat.com>
 
 	* exception.cc (std::abort): Mark as noreturn.
diff --git a/libjava/verify.cc b/libjava/verify.cc
index 562cfaf5bc3d7bb2c9b1f0b11baa999a0abf6e10..38421f46ad63f3ea8a1c8fdb011b7589c9510b3e 100644
--- a/libjava/verify.cc
+++ b/libjava/verify.cc
@@ -675,14 +675,19 @@ private:
 		      oldk = oldk->getComponentType ();
 		    }
 
-		  // This loop will end when we hit Object.
-		  while (true)
+		  // Ordinarily this terminates when we hit Object...
+		  while (k != NULL)
 		    {
 		      if (is_assignable_from_slow (k, oldk))
 			break;
 		      k = k->getSuperclass ();
 		      changed = true;
 		    }
+		  // ... but K could have been an interface, in which
+		  // case we'll end up here.  We just convert this
+		  // into Object.
+		  if (k == NULL)
+		    k = &java::lang::Object::class$;
 
 		  if (changed)
 		    {