From 372c369e7c67f344dca3d6ac55efbfe9e505b39a Mon Sep 17 00:00:00 2001 From: Seebs Date: Tue, 4 Jun 2019 08:55:35 -0500 Subject: [PATCH] Optimize needs to use the new container logic When calling `.optimize`, need to grab the new container which may be different from the original container. --- roaring/roaring.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/roaring/roaring.go b/roaring/roaring.go index 8930981e0..f09667104 100644 --- a/roaring/roaring.go +++ b/roaring/roaring.go @@ -971,11 +971,9 @@ func (b *Bitmap) countEmptyContainers() int { // Optimize converts array and bitmap containers to run containers as necessary. func (b *Bitmap) Optimize() { - citer, _ := b.Containers.Iterator(0) - for citer.Next() { - _, c := citer.Value() - c.optimize() - } + b.Containers.UpdateEvery(func(c *Container, existed bool) (*Container, bool) { + return c.optimize(), true + }) } type errWriter struct { @@ -3519,7 +3517,7 @@ RUNLOOP: } } output := NewContainerRun(runs) - output.optimize() + output = output.optimize() return output }