re PR libgcj/7709 (NullPointerException in _Jv_ResolvePoolEntry)

2002-09-25  Jesse Rosenstock  <jmr@ugcs.caltech.edu>

	* resolve.cc (_Jv_ResolvePoolEntry) [end_of_method_search]: Check
	to see if `the_method == 0' before looking up vtable index.
	Fixes PR libgcj/7709.

From-SVN: r57517
This commit is contained in:
Jesse Rosenstock 2002-09-25 21:02:32 +00:00 committed by Tom Tromey
parent 169f75f384
commit 8848a766bc
2 changed files with 17 additions and 10 deletions

View File

@ -1,3 +1,9 @@
2002-09-25 Jesse Rosenstock <jmr@ugcs.caltech.edu>
* resolve.cc (_Jv_ResolvePoolEntry) [end_of_method_search]: Check
to see if `the_method == 0' before looking up vtable index.
Fixes PR libgcj/7709.
2002-09-25 Tom Tromey <tromey@redhat.com>
* java/lang/natClassLoader.cc:
@ -5,6 +11,7 @@
* resolve.cc: Include NoClassDefFoundError.h, not
ClassNotFoundException.h.
(_Jv_ResolvePoolEntry): Throw NoClassDefFoundError, per spec.
* defineclass.cc: Don't include ClassNotFoundException.h.
* resolve.cc: Include StringBuffer.

View File

@ -303,16 +303,6 @@ _Jv_ResolvePoolEntry (jclass klass, int index)
// with either loader should produce the same result,
// i.e., exactly the same jclass object. JVMS 5.4.3.3
if (pool->tags[index] == JV_CONSTANT_InterfaceMethodref)
vtable_index = -1;
else
vtable_index = _Jv_DetermineVTableIndex
(found_class, method_name, method_signature);
if (vtable_index == METHOD_NOT_THERE)
throw_incompatible_class_change_error
(JvNewStringLatin1 ("method not found"));
if (the_method == 0)
{
java::lang::StringBuffer *sb = new java::lang::StringBuffer();
@ -324,6 +314,16 @@ _Jv_ResolvePoolEntry (jclass klass, int index)
throw new java::lang::NoSuchMethodError (sb->toString());
}
if (pool->tags[index] == JV_CONSTANT_InterfaceMethodref)
vtable_index = -1;
else
vtable_index = _Jv_DetermineVTableIndex (found_class, method_name,
method_signature);
if (vtable_index == METHOD_NOT_THERE)
throw_incompatible_class_change_error
(JvNewStringLatin1 ("method not found"));
pool->data[index].rmethod =
_Jv_BuildResolvedMethod(the_method,
found_class,