Skip to content

Commit 33a45f0

Browse files
committed
Return an empty slice from GetSetBits for nil/empty buffers
1 parent 9c88543 commit 33a45f0

File tree

3 files changed

+10
-0
lines changed

3 files changed

+10
-0
lines changed

bitarray/bitarray.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,10 @@ func getSetBitsInBlocks(
139139
buffer []uint64,
140140
) []uint64 {
141141
bufferCapacity := cap(buffer)
142+
if bufferCapacity == 0 {
143+
return buffer[:0]
144+
}
145+
142146
results := buffer[:bufferCapacity]
143147
resultSize := 0
144148

bitarray/bitarray_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,9 @@ func TestGetSetBits(t *testing.T) {
230230
require.NoError(t, ba.SetBit(200))
231231
require.NoError(t, ba.SetBit(1000))
232232

233+
assert.Equal(t, []uint64(nil), ba.GetSetBits(0, nil))
234+
assert.Equal(t, []uint64{}, ba.GetSetBits(0, []uint64{}))
235+
233236
assert.Equal(t, []uint64{1, 4, 8, 63, 64}, ba.GetSetBits(0, buf))
234237
assert.Equal(t, []uint64{63, 64, 200, 1000}, ba.GetSetBits(10, buf))
235238
assert.Equal(t, []uint64{63, 64, 200, 1000}, ba.GetSetBits(63, buf))

bitarray/sparse_bitarray_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ func TestGetSetCompressedBits(t *testing.T) {
8989
require.NoError(t, ba.SetBit(200))
9090
require.NoError(t, ba.SetBit(1000))
9191

92+
assert.Equal(t, []uint64(nil), ba.GetSetBits(0, nil))
93+
assert.Equal(t, []uint64{}, ba.GetSetBits(0, []uint64{}))
94+
9295
assert.Equal(t, []uint64{1, 4, 8, 63, 64}, ba.GetSetBits(0, buf))
9396
assert.Equal(t, []uint64{63, 64, 200, 1000}, ba.GetSetBits(10, buf))
9497
assert.Equal(t, []uint64{63, 64, 200, 1000}, ba.GetSetBits(63, buf))

0 commit comments

Comments
 (0)