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/26 12:56:55 UTC

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

Author: sjanuary
Date: Wed Mar 26 04:56:52 2008
New Revision: 641271

URL: http://svn.apache.org/viewvc?rev=641271&view=rev
Log:
Fix for HARMONY-5630 ([classlib][pack200] Long.MAX_VALUE not decoded correctly)

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

Modified: harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BandSet.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BandSet.java?rev=641271&r1=641270&r2=641271&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BandSet.java (original)
+++ harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BandSet.java Wed Mar 26 04:56:52 2008
@@ -95,15 +95,6 @@
             // First element should not be discarded
             band = codec.decodeInts(count - 1, in, first);
         }
-//        if(!negativesAllowed && codec != codecUsed) {
-//            if(codecUsed instanceof BHSDCodec && ((BHSDCodec)codecUsed).isSigned()) {
-//                for (int i = 0; i < band.length; i++) {
-//                    while(band[i] < 0) {
-//                        band[i] += ((BHSDCodec)codecUsed).cardinality();
-//                    }
-//                }
-//            }
-//        }
         if(codecUsed instanceof BHSDCodec && ((BHSDCodec)codecUsed).isDelta()) {
             BHSDCodec bhsd = (BHSDCodec)codecUsed;
             long cardinality = bhsd.cardinality();
@@ -303,10 +294,10 @@
             result[i] = new long[counts[i]];
             sum += counts[i];
         }
-        long[] hi = null;
+        int[] hi = null;
         int[] lo;
         if(hiCodec != null) {
-            hi = decodeBandLong(name, in, hiCodec, sum);
+            hi = decodeBandInt(name, in, hiCodec, sum);
             lo = decodeBandInt(name, in, loCodec, sum);
         } else {
             lo = decodeBandInt(name, in, loCodec, sum);
@@ -316,7 +307,7 @@
         for (int i = 0; i < result.length; i++) {
             for (int j = 0; j < result[i].length; j++) {
                 if(hi != null) {
-                    result[i][j] = (hi[index] << 32) | lo[index];
+                    result[i][j] = ((long)hi[index] << 32) | (lo[index] & 4294967295L);
                 } else {
                     result[i][j] = lo[index];
                 }