diff options
author | mark <mark@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-10-11 22:10:37 +0000 |
---|---|---|
committer | mark <mark@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-10-11 22:10:37 +0000 |
commit | 0ea6c8d1767d944fbf838c4dc582e107d427cc28 (patch) | |
tree | f3e6a4d9f03e1c4c3c0faaf5ccbbb5560b43eef3 /libjava/java | |
parent | b486b302878b850ea76f0d475538e94add2429b5 (diff) | |
download | ppe42-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/java')
-rw-r--r-- | libjava/java/lang/natClassLoader.cc | 9 |
1 files changed, 8 insertions, 1 deletions
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) |