Skip to content

Commit 202b9e6

Browse files
authored
BITCOUNT Upper bound calculation fix (#1138)
* fix endOffset calculation * add test for out of bound bitcount offset
1 parent 524deeb commit 202b9e6

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

libs/server/Resp/Bitmap/BitmapManagerBitCount.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public static long BitCountDriver(long startOffset, long endOffset, byte offsetT
7070
{
7171
startOffset = startOffset < 0 ? ProcessNegativeOffset(startOffset, valLen) : startOffset;
7272
endOffset = endOffset < 0 ? ProcessNegativeOffset(endOffset, valLen) : endOffset;
73-
endOffset = endOffset >= valLen ? valLen : endOffset;
73+
endOffset = endOffset >= valLen ? valLen - 1 : endOffset;
7474

7575
if (startOffset >= valLen) // If startOffset greater that valLen always bitcount zero
7676
return 0;

test/Garnet.test/GarnetBitmapTests.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2314,6 +2314,9 @@ public void BitmapBitCountSimpleTest()
23142314
long count = db.StringBitCount(key);
23152315
ClassicAssert.AreEqual(26, count);
23162316

2317+
count = db.StringBitCount(key, 0, int.MaxValue);
2318+
ClassicAssert.AreEqual(26, count);
2319+
23172320
count = db.StringBitCount(key, 0, 0);
23182321
ClassicAssert.AreEqual(4, count);
23192322

0 commit comments

Comments
 (0)