summaryrefslogtreecommitdiffstats
path: root/libjava
diff options
context:
space:
mode:
authormark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>2002-10-11 22:10:37 +0000
committermark <mark@138bc75d-0d04-0410-961f-82ee72b054a4>2002-10-11 22:10:37 +0000
commit0ea6c8d1767d944fbf838c4dc582e107d427cc28 (patch)
treef3e6a4d9f03e1c4c3c0faaf5ccbbb5560b43eef3 /libjava
parentb486b302878b850ea76f0d475538e94add2429b5 (diff)
downloadppe42-gcc-0ea6c8d1767d944fbf838c4dc582e107d427cc28.tar.gz
ppe42-gcc-0ea6c8d1767d944fbf838c4dc582e107d427cc28.zip
Fix for PR libgcj/8142
* java/lang/natClassLoader.cc (findClass): Skip inner classes when loading native modules. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58066 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog6
-rw-r--r--libjava/java/lang/natClassLoader.cc9
2 files changed, 14 insertions, 1 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 51a8a414bc2..eaba74a43dd 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,9 @@
+2002-10-11 Mark Wielaard <mark@klomp.org>
+
+ Fix for PR libgcj/8142
+ * java/lang/natClassLoader.cc (findClass): Skip inner classes when
+ loading native modules.
+
2002-10-10 Michael Koch <konqueror@gmx.de>
* javax/swing/AbstractListModel.java
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc
index c229943ecc5..8bff16997b9 100644
--- a/libjava/java/lang/natClassLoader.cc
+++ b/libjava/java/lang/natClassLoader.cc
@@ -204,7 +204,14 @@ gnu::gcj::runtime::VMClassLoader::findClass (jstring name)
// by `lib-gnu-pkg.so' and `lib-gnu.so'. If loading one of
// these causes the class to appear in the cache, then use it.
java::lang::StringBuffer *sb = new java::lang::StringBuffer (JvNewStringLatin1("lib-"));
- jstring so_base_name = (sb->append (name)->toString ())->replace ('.', '-');
+ // Skip inner classes
+ jstring cn;
+ jint ci = name->indexOf('$');
+ if (ci == -1)
+ cn = name;
+ else
+ cn = name->substring (0, ci);
+ jstring so_base_name = (sb->append (cn)->toString ())->replace ('.', '-');
// Compare against `3' because that is the length of "lib".
while (! klass && so_base_name && so_base_name->length() > 3)
OpenPOWER on IntegriCloud