aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2003-01-14 19:26:21 +0000
committerAndrew Haley <aph@gcc.gnu.org>2003-01-14 19:26:21 +0000
commit4cf0d20fcefcb50cac9edd6068681ab65964624a (patch)
tree2e17559f497789f129243a293ab395fab51b8f1c /libjava
parentd9bbf3f7431f127a29e80a51bf1b61a52ab8e172 (diff)
downloadgcc-4cf0d20fcefcb50cac9edd6068681ab65964624a.zip
gcc-4cf0d20fcefcb50cac9edd6068681ab65964624a.tar.gz
gcc-4cf0d20fcefcb50cac9edd6068681ab65964624a.tar.bz2
natRuntime.cc (_load): StackTrace access needs to be in a try block.
2003-01-14 Andrew Haley <aph@redhat.com> * java/lang/natRuntime.cc (_load): StackTrace access needs to be in a try block. From-SVN: r61293
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/java/lang/natRuntime.cc24
2 files changed, 21 insertions, 8 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 062a4a9..4389731 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2003-01-14 Andrew Haley <aph@redhat.com>
+
+ * java/lang/natRuntime.cc (_load): StackTrace access needs to be
+ in a try block.
+
2003-01-10 Andrew Haley <aph@redhat.com>
* include/dwarf2-signal.h: Remove x86_64.
diff --git a/libjava/java/lang/natRuntime.cc b/libjava/java/lang/natRuntime.cc
index f5177b0..f74a1e7 100644
--- a/libjava/java/lang/natRuntime.cc
+++ b/libjava/java/lang/natRuntime.cc
@@ -29,6 +29,7 @@ details. */
#include <java/lang/ConcreteProcess.h>
#include <java/lang/ClassLoader.h>
#include <gnu/gcj/runtime/StackTrace.h>
+#include <java/lang/ArrayIndexOutOfBoundsException.h>
#include <jni.h>
@@ -181,19 +182,26 @@ java::lang::Runtime::_load (jstring path, jboolean do_search)
ClassLoader *sys = ClassLoader::getSystemClassLoader();
ClassLoader *look = NULL;
gnu::gcj::runtime::StackTrace *t = new gnu::gcj::runtime::StackTrace(10);
- for (int i = 0; i < 10; ++i)
- {
- jclass klass = t->classAt(i);
- if (klass != NULL)
+ try
+ {
+ for (int i = 0; i < 10; ++i)
{
- ClassLoader *loader = klass->getClassLoaderInternal();
- if (loader != NULL && loader != sys)
+ jclass klass = t->classAt(i);
+ if (klass != NULL)
{
- look = loader;
- break;
+ ClassLoader *loader = klass->getClassLoaderInternal();
+ if (loader != NULL && loader != sys)
+ {
+ look = loader;
+ break;
+ }
}
}
}
+ catch (::java::lang::ArrayIndexOutOfBoundsException *e)
+ {
+ }
+
if (look != NULL)
{
// Don't include solib prefix in string passed to