Merge pull request #779 from travisturner/look-for-array-oom

Fix infinite loop in bitmap-to-array conversion.
This commit is contained in:
Travis Turner 2017-08-21 14:45:14 -05:00 committed by GitHub
commit 2fea07f6bb
2 changed files with 5 additions and 1 deletions

View file

@ -1992,6 +1992,10 @@ func intersectBitmapRun(a, b *container) *container {
if a.bitmapContains(i) {
output.array = append(output.array, i)
}
// If the run ends the container, break to avoid an infinite loop.
if i == 65535 {
break
}
}
}
output.n = len(output.array)

View file

@ -623,7 +623,7 @@ func TestIntersectBitmapRunArray(t *testing.T) {
},
{
bitmap: []uint64{0xFFFFFFFFFFFFFFFF, 1, 1, 1, 0xA, 1, 1, 0, 1},
runs: []interval16{{start: 63, last: 10000}},
runs: []interval16{{start: 63, last: 10000}, {start: 65000, last: 65535}},
exp: []uint16{63, 64, 128, 192, 257, 259, 320, 384, 512},
expN: 9,
},