diff options
author | Andrew Haley <aph@redhat.com> | 2002-12-20 02:06:21 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2002-12-20 02:06:21 +0000 |
commit | 51d6eed48eace41bef16aa1d4401e0fb081e7d5d (patch) | |
tree | 329c6fbe55f8649f93fc5e4bff713aef620dc74e /libjava/java/util/natResourceBundle.cc | |
parent | 4dfde2067282308af1c16963d3500930719c23a0 (diff) | |
download | gcc-51d6eed48eace41bef16aa1d4401e0fb081e7d5d.zip gcc-51d6eed48eace41bef16aa1d4401e0fb081e7d5d.tar.gz gcc-51d6eed48eace41bef16aa1d4401e0fb081e7d5d.tar.bz2 |
natResourceBundle.cc: Include ArrayIndexOutOfBoundsException.h.
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.
From-SVN: r60348
Diffstat (limited to 'libjava/java/util/natResourceBundle.cc')
-rw-r--r-- | libjava/java/util/natResourceBundle.cc | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/libjava/java/util/natResourceBundle.cc b/libjava/java/util/natResourceBundle.cc index 21a9565..adb83f9 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; } |