From a9f04acb8d52fdb323bbfc9e53f34652c4987af7 Mon Sep 17 00:00:00 2001
From: tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Wed, 6 Feb 2002 21:53:59 +0000
Subject: [PATCH] 	* verify.cc (type::isnull): New method. 
 (require_array_type): Handle case where array is null. 
 (verify_instructions_0) [op_arraylength]: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49555 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libjava/ChangeLog |  6 ++++++
 libjava/verify.cc | 11 ++++++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index ef14272f4793..4823eccaa2be 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,9 @@
+2002-02-06  Tom Tromey  <tromey@redhat.com>
+
+	* verify.cc (type::isnull): New method.
+	(require_array_type): Handle case where array is null.
+	(verify_instructions_0) [op_arraylength]: Likewise.
+
 2002-02-05  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>
 
 	* configure.in: Set up PLATFORMOBJS not PLATFORM_SPECIFIC_SOURCES.
diff --git a/libjava/verify.cc b/libjava/verify.cc
index c9cfb885fdf8..46cee1533ce6 100644
--- a/libjava/verify.cc
+++ b/libjava/verify.cc
@@ -522,6 +522,11 @@ private:
       return false;
     }
 
+    bool isnull () const
+    {
+      return key == null_type;
+    }
+
     bool isinterface (_Jv_BytecodeVerifier *verifier)
     {
       resolve (verifier);
@@ -1161,6 +1166,10 @@ private:
   // compatible with type ELEMENT.  Returns the actual element type.
   type require_array_type (type array, type element)
   {
+    // An odd case.  Here we just pretend that everything went ok.
+    if (array.isnull ())
+      return element;
+
     if (! array.isarray ())
       verify_fail ("array required");
 
@@ -2796,7 +2805,7 @@ private:
 	  case op_arraylength:
 	    {
 	      type t = pop_type (reference_type);
-	      if (! t.isarray ())
+	      if (! t.isarray () && ! t.isnull ())
 		verify_fail ("array type expected");
 	      push_type (int_type);
 	    }
-- 
GitLab