re PR libgcj/8142 ('$' in class names vs. dlopen 'dynamic string tokens')

Fix for PR libgcj/8142
	* java/lang/natClassLoader.cc (findClass): Skip inner classes when
	loading native modules.

From-SVN: r58066
This commit is contained in:
Mark Wielaard 2002-10-11 22:10:37 +00:00 committed by Mark Wielaard
parent 45c7cbd930
commit 9dac635528
2 changed files with 14 additions and 1 deletions

View File

@ -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

View File

@ -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)