You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by sj...@apache.org on 2008/03/17 17:49:42 UTC

svn commit: r637969 - /harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/IcBands.java

Author: sjanuary
Date: Mon Mar 17 09:49:41 2008
New Revision: 637969

URL: http://svn.apache.org/viewvc?rev=637969&view=rev
Log:
Fix for HARMONY-5611 ([classlib][pack200] IcTuple parsing broken: IcTuple.C can equal IcTuple.C2?)

Modified:
    harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/IcBands.java

Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/IcBands.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/IcBands.java?rev=637969&r1=637968&r2=637969&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/IcBands.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/IcBands.java Mon Mar 17 09:49:41 2008
@@ -55,10 +55,25 @@
                 innerClassCount, cpClass);
         int[] icFlags = decodeBandInt("ic_flags", in, Codec.UNSIGNED5, innerClassCount);
         int outerClasses = SegmentUtils.countBit16(icFlags);
-        String[] icOuterClass = parseReferences("ic_outer_class", in, Codec.DELTA5,
-                outerClasses, cpClass);
-        String[] icName = parseReferences("ic_name", in, Codec.DELTA5, outerClasses,
-                cpUTF8);
+        int[] icOuterClassInts = decodeBandInt("ic_outer_class", in, Codec.DELTA5,
+                outerClasses);
+        String[] icOuterClass = new String[outerClasses];
+        for (int i = 0; i < icOuterClass.length; i++) {
+        	if(icOuterClassInts[i] == 0) {
+        		icOuterClass[i] = null;
+        	} else {
+        		icOuterClass[i] = cpClass[icOuterClassInts[i] - 1];
+        	}
+		}
+        int[] icNameInts = decodeBandInt("ic_name", in, Codec.DELTA5, outerClasses);
+        String[] icName = new String[outerClasses];
+        for (int i = 0; i < icName.length; i++) {
+        	if(icNameInts[i] == 0) {
+        		icName[i] = null;
+        	} else {
+        		icName[i] = cpUTF8[icNameInts[i] - 1];
+        	}
+		}
 
         // Construct IC tuples
         icAll = new IcTuple[icThisClass.length];