From e91720276654d0180f5dfa655f4561cb5c87e986 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Sun, 2 Apr 2023 11:17:05 +0100 Subject: [PATCH] labels: make sure estimated size is not negative Deleted labels are remembered, even if they were not in `base` or were removed from `add`, so `base+add-del` could go negative. Signed-off-by: Bryan Boreham --- model/labels/labels.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/model/labels/labels.go b/model/labels/labels.go index 4e87eb9b3..e9d6c940e 100644 --- a/model/labels/labels.go +++ b/model/labels/labels.go @@ -577,7 +577,11 @@ func (b *Builder) Labels() Labels { return b.base } - res := make(Labels, 0, len(b.base)-len(b.del)+len(b.add)) + expectedSize := len(b.base) + len(b.add) - len(b.del) + if expectedSize < 1 { + expectedSize = 1 + } + res := make(Labels, 0, expectedSize) for _, l := range b.base { if slices.Contains(b.del, l.Name) || contains(b.add, l.Name) { continue