[vmkit-commits] [vmkit] r78389 - /vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Fri Aug 7 10:26:57 PDT 2009
Author: geoffray
Date: Fri Aug 7 12:26:57 2009
New Revision: 78389
URL: http://llvm.org/viewvc/llvm-project?rev=78389&view=rev
Log:
Fix bugs when loading a class from forName:
- [Ljava/lang/Object; is invalid.
- an offset of two must be applied to array names to get the component name.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=78389&r1=78388&r2=78389&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Fri Aug 7 12:26:57 2009
@@ -468,9 +468,9 @@
uint32 bufLen = len - 2;
const UTF8* componentName = hashUTF8->lookupReader(buf, bufLen);
if (!componentName && holder) {
- holder->size = len - 1;
- for (uint32 i = 0; i < len - 1; ++i) {
- holder->elements[i] = name->elements[start + i];
+ holder->size = len - 2;
+ for (uint32 i = 0; i < len - 2; ++i) {
+ holder->elements[i] = name->elements[start + 1 + i];
}
componentName = holder;
}
@@ -593,6 +593,7 @@
for (sint32 i = 0; i < str->count; ++i) {
uint16 cur = str->value->elements[str->offset + i];
if (cur == '.') name->elements[i] = '/';
+ else if (cur == '/') return 0;
else name->elements[i] = cur;
}
}
More information about the vmkit-commits
mailing list