From 8848a766bc1ec6b38f278ecef52e2d8bd5a946da Mon Sep 17 00:00:00 2001 From: Jesse Rosenstock Date: Wed, 25 Sep 2002 21:02:32 +0000 Subject: re PR libgcj/7709 (NullPointerException in _Jv_ResolvePoolEntry) 2002-09-25 Jesse Rosenstock * 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 --- libjava/resolve.cc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'libjava/resolve.cc') diff --git a/libjava/resolve.cc b/libjava/resolve.cc index af1f7c6..f3b98a7 100644 --- a/libjava/resolve.cc +++ b/libjava/resolve.cc @@ -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, -- cgit v1.1