[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