[vmkit-commits] [vmkit] r71553 - /vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue May 12 07:04:37 PDT 2009
Author: geoffray
Date: Tue May 12 09:04:15 2009
New Revision: 71553
URL: http://llvm.org/viewvc/llvm-project?rev=71553&view=rev
Log:
Bugfix when parsing a user UTF8.
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=71553&r1=71552&r2=71553&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Tue May 12 09:04:15 2009
@@ -399,32 +399,40 @@
uint32 len = name->size;
uint32 start = 0;
uint32 origLen = len;
- bool doLoop = true;
- while (doLoop) {
+ while (true) {
--len;
if (len == 0) {
- doLoop = false;
+ return 0;
} else {
++start;
if (name->elements[start] != I_TAB) {
if (name->elements[start] == I_REF) {
uint32 size = (uint32)name->size;
- if ((size == (start + 1)) || (size == (start + 2)) ||
- (name->elements[start + 1] == I_TAB) ||
+ if ((size == (start + 1)) || (size == (start + 2)) ||
+ (name->elements[start + 1] == I_TAB) ||
(name->elements[origLen - 1] != I_END_REF)) {
- doLoop = false;
+ return 0;
} else {
const uint16* buf = &(name->elements[start + 1]);
uint32 bufLen = len - 2;
const UTF8* componentName = hashUTF8->lookupReader(buf, bufLen);
if (!componentName && create) {
- componentName = name->extract(isolate, start + 1, len - 2);
+ componentName = name->extract(isolate, start + 1,
+ start + len - 1);
}
return componentName;
}
} else {
- prim = true;
+ uint16 cur = name->elements[start];
+ if ((cur == I_BOOL || cur == I_BYTE ||
+ cur == I_CHAR || cur == I_SHORT ||
+ cur == I_INT || cur == I_FLOAT ||
+ cur == I_DOUBLE || cur == I_LONG)
+ && ((uint32)name->size) == start + 1) {
+ prim = true;
+ }
+ return 0;
}
}
}
More information about the vmkit-commits
mailing list