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:
parent
45c7cbd930
commit
9dac635528
2 changed files with 14 additions and 1 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue