You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by gs...@apache.org on 2007/03/26 15:58:09 UTC

svn commit: r522516 - /harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Class_File_Loader.cpp

Author: gshimansky
Date: Mon Mar 26 06:58:08 2007
New Revision: 522516

URL: http://svn.apache.org/viewvc?view=rev&rev=522516
Log:
Applied HARMONY-3489 [drlvm][classloader] Fixed reason of vts failures on ClassFileParser


Modified:
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Class_File_Loader.cpp

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Class_File_Loader.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Class_File_Loader.cpp?view=diff&rev=522516&r1=522515&r2=522516
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Class_File_Loader.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Class_File_Loader.cpp Mon Mar 26 06:58:08 2007
@@ -1183,6 +1183,7 @@
             clss->get_name()->bytes << ": illegal handler_pc"
             << " for exception handler of code attribute for method "
             << method->get_name()->bytes << method->get_descriptor()->bytes);
+        return false;       
     }
 
     uint16 catch_index;
@@ -2625,21 +2626,21 @@
         case CONSTANT_InterfaceMethodref:
         {
             unsigned class_index = get_ref_class_index(i);
-            unsigned name_type_index = get_ref_name_and_type_index(i);
-            const char *next = NULL;
-            String *name;
-            String *descriptor;
-            unsigned name_index = get_name_and_type_name_index(name_type_index);
-            unsigned descriptor_index = get_name_and_type_descriptor_index(name_type_index);
             if (!valid_cpi(clss, class_index, CONSTANT_Class, "for class name at CONSTANT_*ref entry")) {
                 return false;
             }
+            unsigned name_type_index = get_ref_name_and_type_index(i);
             if (!valid_cpi(clss, name_type_index, CONSTANT_NameAndType, "for name-and-type at CONSTANT_*ref entry")) {
                 return false;
-            }
+            }            
+            const char *next = NULL;
+            String *name;
+            String *descriptor;
+            unsigned name_index = get_name_and_type_name_index(name_type_index);
             if(!valid_cpi(clss, name_index, CONSTANT_Utf8, "for name at CONSTANT_*ref entry")) {
                 return false;
-            }
+            }        
+            unsigned descriptor_index = get_name_and_type_descriptor_index(name_type_index);
             if (!valid_cpi(clss, descriptor_index, CONSTANT_Utf8, "for descriptor at CONSTANT_*ref entry")) {
                 return false;
             }