From f17c1d00667e1ba9c80876a618ab047076e13db7 Mon Sep 17 00:00:00 2001
From: tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Fri, 24 Jun 2005 22:14:03 +0000
Subject: [PATCH] 	* boehm.cc (_Jv_MarkObj): Handle case where field's
 type is NULL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101300 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libjava/ChangeLog | 4 ++++
 libjava/boehm.cc  | 8 ++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index bcc1eabc343a..51820665d2a9 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,7 @@
+2005-06-24  Tom Tromey  <tromey@redhat.com>
+
+	* boehm.cc (_Jv_MarkObj): Handle case where field's type is NULL.
+
 2005-06-24  Tom Tromey  <tromey@redhat.com>
 
 	* verify.cc (verify_instructions_0): Correctly handle situation
diff --git a/libjava/boehm.cc b/libjava/boehm.cc
index af26c2b7b36e..06b8f9889e86 100644
--- a/libjava/boehm.cc
+++ b/libjava/boehm.cc
@@ -1,6 +1,6 @@
 // boehm.cc - interface between libjava and Boehm GC.
 
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
    Free Software Foundation
 
    This file is part of libgcj.
@@ -191,7 +191,11 @@ _Jv_MarkObj (void *addr, void *msp, void *msl, void *env)
 	      // static members.
 	      // Note that field->u.addr may be null if the class c is
 	      // JV_STATE_LOADED but not JV_STATE_PREPARED (initialized).
-	      if (JvFieldIsRef (field) && p && field->isResolved()) 
+	      // Note also that field->type could be NULL in some
+	      // situations, for instance if the class has state
+	      // JV_STATE_ERROR.
+	      if (field->type && JvFieldIsRef (field)
+		  && p && field->isResolved()) 
 		{
 		  jobject val = *(jobject*) p;
 		  p = (GC_PTR) val;
-- 
GitLab