diff --git a/core/filtermaps/map_renderer.go b/core/filtermaps/map_renderer.go index e1284a3829..6c67a096df 100644 --- a/core/filtermaps/map_renderer.go +++ b/core/filtermaps/map_renderer.go @@ -426,10 +426,17 @@ func (r *mapRenderer) writeFinishedMaps(pauseCb func() bool) error { } // add or update filter rows for rowIndex := uint32(0); rowIndex < r.f.mapHeight; rowIndex++ { - var ( - mapIndices []uint32 - rows []FilterRow - ) + base := len(r.finishedMaps) + extra := 0 + if newRange.maps.AfterLast() == r.finished.AfterLast() { + if oldRange.maps.AfterLast() > r.finished.AfterLast() { + extra = int(oldRange.maps.AfterLast() - r.finished.AfterLast()) + } + } + capacity := base + extra + + mapIndices := make([]uint32, 0, capacity) + rows := make([]FilterRow, 0, capacity) for mapIndex := range r.finished.Iter() { row := r.finishedMaps[mapIndex].filterMap[rowIndex] if fm, _ := r.f.filterMapCache.Get(mapIndex); fm != nil && row.Equal(fm[rowIndex]) {