summaryrefslogtreecommitdiffstats
path: root/libjava/java
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2002-12-20 02:06:21 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2002-12-20 02:06:21 +0000
commit4ab16f021ddcaddcda46b79844c8e71a4e931856 (patch)
tree329c6fbe55f8649f93fc5e4bff713aef620dc74e /libjava/java
parent57f91578fd35a6c9c62b28c5439693770060e71c (diff)
downloadppe42-gcc-4ab16f021ddcaddcda46b79844c8e71a4e931856.tar.gz
ppe42-gcc-4ab16f021ddcaddcda46b79844c8e71a4e931856.zip
2002-12-19 Andrew Haley <aph@redhat.com>
* java/util/natResourceBundle.cc: Include ArrayIndexOutOfBoundsException.h. (getCallingClassLoader): Don't put upper bound on stack search. Catch ArrayIndexOutOfBoundsException. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60348 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/util/natResourceBundle.cc15
1 files changed, 11 insertions, 4 deletions
diff --git a/libjava/java/util/natResourceBundle.cc b/libjava/java/util/natResourceBundle.cc
index 21a9565c996..adb83f92b26 100644
--- a/libjava/java/util/natResourceBundle.cc
+++ b/libjava/java/util/natResourceBundle.cc
@@ -16,17 +16,24 @@ details. */
#include <java/lang/SecurityManager.h>
#include <java/lang/ClassLoader.h>
#include <java/lang/Class.h>
+#include <java/lang/ArrayIndexOutOfBoundsException.h>
#include <gnu/gcj/runtime/StackTrace.h>
java::lang::ClassLoader *
java::util::ResourceBundle::getCallingClassLoader ()
{
gnu::gcj::runtime::StackTrace *t = new gnu::gcj::runtime::StackTrace(6);
- for (int i = 3; i < 6; ++i)
+ try
+ {
+ for (int i = 3; ; ++i)
+ {
+ jclass klass = t->classAt(i);
+ if (klass != NULL)
+ return klass->getClassLoaderInternal();
+ }
+ }
+ catch (::java::lang::ArrayIndexOutOfBoundsException *e)
{
- jclass klass = t->classAt(i);
- if (klass != NULL)
- return klass->getClassLoaderInternal();
}
return NULL;
}
OpenPOWER on IntegriCloud