aboutsummaryrefslogtreecommitdiff
path: root/libjava/boehm.cc
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2005-06-24 22:14:03 +0000
committerTom Tromey <tromey@gcc.gnu.org>2005-06-24 22:14:03 +0000
commitb7938f087dc0934e674e7cf7f6049145bd1a345d (patch)
tree3ede541d377cde098b4cb76833fb3df33e0a0cea /libjava/boehm.cc
parentaca02b7e0012d382259660d8d44917e30a24dfec (diff)
downloadgcc-b7938f087dc0934e674e7cf7f6049145bd1a345d.zip
gcc-b7938f087dc0934e674e7cf7f6049145bd1a345d.tar.gz
gcc-b7938f087dc0934e674e7cf7f6049145bd1a345d.tar.bz2
* boehm.cc (_Jv_MarkObj): Handle case where field's type is NULL.
From-SVN: r101300
Diffstat (limited to 'libjava/boehm.cc')
-rw-r--r--libjava/boehm.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/libjava/boehm.cc b/libjava/boehm.cc
index af26c2b..06b8f98 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;