diff options
author | Jeff Sturm <jeff.sturm@commerceone.com> | 2001-02-12 17:30:00 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2001-02-12 17:30:00 +0000 |
commit | c6b33a47ea7d36d3e9eb4de227778332b179704d (patch) | |
tree | 4c00b61de5e3634c10d50ef6364693ac611dd522 /libjava/interpret.cc | |
parent | 7004b11bf0d1b4a58baccfd38bdbff9365f0e87b (diff) | |
download | gcc-c6b33a47ea7d36d3e9eb4de227778332b179704d.zip gcc-c6b33a47ea7d36d3e9eb4de227778332b179704d.tar.gz gcc-c6b33a47ea7d36d3e9eb4de227778332b179704d.tar.bz2 |
interpret.cc (continue1): [insn_invokevirtual] Do an explicit null pointer check.
2001-02-12 Jeff Sturm <jeff.sturm@commerceone.com>
Tom Tromey <tromey@redhat.com>
* interpret.cc (continue1): [insn_invokevirtual] Do an explicit
null pointer check.
Co-Authored-By: Tom Tromey <tromey@redhat.com>
From-SVN: r39607
Diffstat (limited to 'libjava/interpret.cc')
-rw-r--r-- | libjava/interpret.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libjava/interpret.cc b/libjava/interpret.cc index 0a069ac..aba1e2f 100644 --- a/libjava/interpret.cc +++ b/libjava/interpret.cc @@ -1,6 +1,6 @@ // interpret.cc - Code for the interpreter -/* Copyright (C) 1999, 2000 Free Software Foundation +/* Copyright (C) 1999, 2000, 2001 Free Software Foundation This file is part of libgcj. @@ -678,7 +678,11 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv) rmeth = (_Jv_ResolvePoolEntry (defining_class, index)).rmethod; sp -= rmeth->stack_item_count; - NULLCHECK (sp[0].o); + // We don't use NULLCHECK here because we can't rely on that + // working if the method is final. So instead we do an + // explicit test. + if (! sp[0].o) + throw new java::lang::NullPointerException (); if (rmeth->vtable_index == -1) { |