Skip to content

Commit 461d7ec

Browse files
authored
Merge pull request #468 from RoaringBitmap/issue467
fixing issue 467
2 parents 95eeba4 + 6b2c8e2 commit 461d7ec

File tree

2 files changed

+76
-2
lines changed

2 files changed

+76
-2
lines changed

roaring_test.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3236,3 +3236,77 @@ func BenchmarkArrayUnionThreshold(b *testing.B) {
32363236
})
32373237
}
32383238
}
3239+
3240+
func TestIssue467CaseSmall(t *testing.T) {
3241+
b := New()
3242+
b.AddRange(0, 16385)
3243+
b.AddRange(16385, 20482)
3244+
b.AddRange(20482, 27862)
3245+
b.AddRange(27862, 44247)
3246+
b.AddRange(45576, 61961)
3247+
b.AddRange(61961, 66058)
3248+
b.AddRange(66058, 67247)
3249+
b.AddRange(68819, 73028)
3250+
b.AddRange(73028, 89413)
3251+
b.AddRange(92266, 108651)
3252+
b.AddRange(108651, 113772)
3253+
b.AddRange(113772, 118757)
3254+
b.AddRange(118757, 132098)
3255+
b.RunOptimize()
3256+
require.NoError(t, b.Validate())
3257+
}
3258+
3259+
func TestIssue467CaseLarge(t *testing.T) {
3260+
b := New()
3261+
b.RemoveRange(0, 16385)
3262+
b.RemoveRange(16385, 20482)
3263+
b.RemoveRange(20482, 27862)
3264+
b.AddRange(0, 16385)
3265+
b.AddRange(16385, 20482)
3266+
b.AddRange(20482, 27862)
3267+
b.RemoveRange(27862, 44247)
3268+
b.RemoveRange(44247, 45576)
3269+
b.RemoveRange(45576, 61961)
3270+
b.RemoveRange(61961, 66058)
3271+
b.RemoveRange(66058, 67247)
3272+
b.AddRange(27862, 44247)
3273+
b.AddRange(45576, 61961)
3274+
b.AddRange(44247, 45576)
3275+
b.AddRange(61961, 66058)
3276+
b.AddRange(66058, 67247)
3277+
b.RemoveRange(67247, 68819)
3278+
b.RemoveRange(68819, 73028)
3279+
b.RemoveRange(73028, 89413)
3280+
b.RemoveRange(89413, 92266)
3281+
b.RemoveRange(92266, 108651)
3282+
b.RemoveRange(108651, 113772)
3283+
b.RemoveRange(113772, 118757)
3284+
b.AddRange(68819, 73028)
3285+
b.AddRange(73028, 89413)
3286+
b.AddRange(92266, 108651)
3287+
b.AddRange(89413, 92266)
3288+
b.AddRange(108651, 113772)
3289+
b.AddRange(113772, 118757)
3290+
b.RemoveRange(118757, 132098)
3291+
b.AddRange(118757, 132098)
3292+
b.RemoveRange(132098, 137544)
3293+
b.AddRange(132098, 137544)
3294+
b.RemoveRange(137544, 153929)
3295+
b.RemoveRange(153929, 155151)
3296+
b.RemoveRange(155151, 162078)
3297+
b.RemoveRange(162078, 167119)
3298+
b.RemoveRange(167119, 181012)
3299+
b.RemoveRange(181012, 197397)
3300+
b.RemoveRange(197397, 201244)
3301+
b.RemoveRange(201244, 217629)
3302+
b.RemoveRange(217629, 222750)
3303+
b.RemoveRange(222750, 227708)
3304+
b.RemoveRange(227708, 235777)
3305+
b.RemoveRange(235777, 252162)
3306+
b.RemoveRange(252162, 256259)
3307+
b.AddRange(252162, 256259)
3308+
b.AddRange(227708, 235777)
3309+
b.AddRange(235777, 252162)
3310+
b.RunOptimize()
3311+
require.NoError(t, b.Validate())
3312+
}

runcontainer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1504,8 +1504,8 @@ func (iv interval16) isNonContiguousDisjoint(b interval16) bool {
15041504
return false
15051505
}
15061506

1507-
nonContiguous1 := iv.start == b.last()+1 || iv.last() == b.start+1
1508-
nonContiguous2 := b.start == iv.last()+1 || b.last() == iv.start+1
1507+
nonContiguous1 := uint32(iv.start) == uint32(b.last())+1 || uint32(iv.last()) == uint32(b.start)+1
1508+
nonContiguous2 := uint32(b.start) == uint32(iv.last())+1 || uint32(b.last()) == uint32(iv.start)+1
15091509
if nonContiguous1 || nonContiguous2 {
15101510
return false
15111511
}

0 commit comments

Comments
 (0)