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) <[email protected]> Authored: Fri Sep 23 14:30:37 2016 -0400 Committer: Christopher L. Shannon (cshannon) <[email protected]> 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)); + } }
