From e959722670d7d9a74646f2eb2d6bb150d8a9d285 Mon Sep 17 00:00:00 2001 From: k1LoW Date: Mon, 27 Sep 2021 17:39:06 +0900 Subject: [PATCH] Fix: panic: assignment to entry in nil map --- pkg/coverage/coverage.go | 5 +++++ pkg/coverage/printer.go | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/pkg/coverage/coverage.go b/pkg/coverage/coverage.go index 6011561e..3fea82b4 100644 --- a/pkg/coverage/coverage.go +++ b/pkg/coverage/coverage.go @@ -170,8 +170,13 @@ func (fc *FileCoverage) FindBlocksByLine(n int) BlockCoverages { return BlockCoverages{} } if len(fc.cache) == 0 { + fc.cache = map[int]BlockCoverages{} for _, b := range fc.Blocks { for i := *b.StartLine; i <= *b.EndLine; i++ { + _, ok := fc.cache[i] + if !ok { + fc.cache[i] = BlockCoverages{} + } fc.cache[i] = append(fc.cache[i], b) } } diff --git a/pkg/coverage/printer.go b/pkg/coverage/printer.go index 015cb3bf..e9d6a61b 100644 --- a/pkg/coverage/printer.go +++ b/pkg/coverage/printer.go @@ -104,6 +104,10 @@ func paintLine(n, w int, in string, blocks BlockCoverages) (string, string) { if *b.EndLine == n && b.EndCol != nil { e = *b.EndCol - 1 } + if e > lc { + // coverage report and source code are out of sync. + e = lc + } for i := s; i < e; i++ { l[i] = cl }