From 54e9cc89576db0db9991eddadf6ad56b82ff3027 Mon Sep 17 00:00:00 2001 From: Sushil-19 Date: Tue, 3 Mar 2026 13:33:36 +0530 Subject: [PATCH 1/3] core/filtermaps: preallocate slices in writeFinishedMaps --- core/filtermaps/map_renderer.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/filtermaps/map_renderer.go b/core/filtermaps/map_renderer.go index e1284a3829..819415d94e 100644 --- a/core/filtermaps/map_renderer.go +++ b/core/filtermaps/map_renderer.go @@ -426,10 +426,10 @@ 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 - ) + capacity := len(r.finishedMaps) + + 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]) { From 20fe4a90595cc9e2fc3dd11dc988190194bb2b96 Mon Sep 17 00:00:00 2001 From: Sushil-19 Date: Tue, 3 Mar 2026 14:28:26 +0530 Subject: [PATCH 2/3] core/filtermaps: adjust slice preallocation capacity handling --- core/filtermaps/map_renderer.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/filtermaps/map_renderer.go b/core/filtermaps/map_renderer.go index 819415d94e..2adf4e13ce 100644 --- a/core/filtermaps/map_renderer.go +++ b/core/filtermaps/map_renderer.go @@ -426,7 +426,12 @@ func (r *mapRenderer) writeFinishedMaps(pauseCb func() bool) error { } // add or update filter rows for rowIndex := uint32(0); rowIndex < r.f.mapHeight; rowIndex++ { - capacity := len(r.finishedMaps) + base := len(r.finishedMaps) + extra := 0 + if newRange.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) From d0df3b050da3a55736731381501448a198ed103f Mon Sep 17 00:00:00 2001 From: Sushil-19 Date: Tue, 3 Mar 2026 15:17:06 +0530 Subject: [PATCH 3/3] core/filtermaps: prevent unsigned underflow in capacity calculation --- core/filtermaps/map_renderer.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/filtermaps/map_renderer.go b/core/filtermaps/map_renderer.go index 2adf4e13ce..6c67a096df 100644 --- a/core/filtermaps/map_renderer.go +++ b/core/filtermaps/map_renderer.go @@ -429,7 +429,9 @@ func (r *mapRenderer) writeFinishedMaps(pauseCb func() bool) error { base := len(r.finishedMaps) extra := 0 if newRange.maps.AfterLast() == r.finished.AfterLast() { - extra = int(oldRange.maps.AfterLast() - r.finished.AfterLast()) + if oldRange.maps.AfterLast() > r.finished.AfterLast() { + extra = int(oldRange.maps.AfterLast() - r.finished.AfterLast()) + } } capacity := base + extra