You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cs...@apache.org on 2016/09/23 18:31:14 UTC

activemq git commit: https://issues.apache.org/jira/browse/AMQ-6431

Repository: activemq
Updated Branches:
  refs/heads/master 18571ce09 -> 09456480b


https://issues.apache.org/jira/browse/AMQ-6431

Fixing BitArrayBin to not overflow in certain cases with numbers larger
than Int max


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/09456480
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/09456480
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/09456480

Branch: refs/heads/master
Commit: 09456480b838efd97297679840d33f7949449e21
Parents: 18571ce
Author: Christopher L. Shannon (cshannon) <ch...@gmail.com>
Authored: Fri Sep 23 14:30:37 2016 -0400
Committer: Christopher L. Shannon (cshannon) <ch...@gmail.com>
Committed: Fri Sep 23 14:30:37 2016 -0400

----------------------------------------------------------------------
 .../main/java/org/apache/activemq/util/BitArrayBin.java   |  2 +-
 .../java/org/apache/activemq/util/BitArrayBinTest.java    | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/09456480/activemq-client/src/main/java/org/apache/activemq/util/BitArrayBin.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/util/BitArrayBin.java b/activemq-client/src/main/java/org/apache/activemq/util/BitArrayBin.java
index d988ae1..e19b817 100755
--- a/activemq-client/src/main/java/org/apache/activemq/util/BitArrayBin.java
+++ b/activemq-client/src/main/java/org/apache/activemq/util/BitArrayBin.java
@@ -144,7 +144,7 @@ public class BitArrayBin implements Serializable {
     private int getBin(long index) {
         int answer = 0;
         if (longFirstIndex < 0) {
-            longFirstIndex = (int) (index - (index % BitArray.LONG_SIZE));
+            longFirstIndex = (index - (index % BitArray.LONG_SIZE));
         } else if (longFirstIndex >= 0) {
             answer = (int)((index - longFirstIndex) / BitArray.LONG_SIZE);
         }

http://git-wip-us.apache.org/repos/asf/activemq/blob/09456480/activemq-client/src/test/java/org/apache/activemq/util/BitArrayBinTest.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/test/java/org/apache/activemq/util/BitArrayBinTest.java b/activemq-client/src/test/java/org/apache/activemq/util/BitArrayBinTest.java
index 2b17d8f..07e653d 100644
--- a/activemq-client/src/test/java/org/apache/activemq/util/BitArrayBinTest.java
+++ b/activemq-client/src/test/java/org/apache/activemq/util/BitArrayBinTest.java
@@ -171,4 +171,14 @@ public class BitArrayBinTest {
         toTest.setBit(largeNum, true);
         assertTrue("set", toTest.getBit(largeNum));
     }
+
+    //This test is slightly different in that it doesn't set bit 1 to
+    //true as above which was causing a different result before AMQ-6431
+    @Test
+    public void testLargeNumber2() {
+        BitArrayBin toTest = new BitArrayBin(1024);
+        long largeNum = Integer.MAX_VALUE * 2L + 100L;
+        toTest.setBit(largeNum, true);
+        assertTrue(toTest.getBit(largeNum));
+    }
 }