From e42e793cd86ae343bddb30d7c54d1d29c7388d39 Mon Sep 17 00:00:00 2001 From: Mateusz Poliwczak Date: Wed, 12 Feb 2025 20:12:37 +0100 Subject: [PATCH] make sure that len and cap are >= 0 Change-Id: I687b2ac63a61b82561013b87f0b9d0c37c640719 --- src/cmd/compile/internal/escape/escape.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/cmd/compile/internal/escape/escape.go b/src/cmd/compile/internal/escape/escape.go index 510412daed..0c3ceba6da 100644 --- a/src/cmd/compile/internal/escape/escape.go +++ b/src/cmd/compile/internal/escape/escape.go @@ -128,10 +128,13 @@ func Funcs(all []*ir.Func) { if n, ok := n.(*ir.MakeExpr); ok { if n.Cap != nil { if s := ir.StaticValue(n.Cap); s.Op() == ir.OLITERAL { - if v, ok := s.(*ir.BasicLit); !ok || v.Val().Kind() != constant.Int { + cap, ok := s.(*ir.BasicLit) + if !ok || cap.Val().Kind() != constant.Int { base.Fatalf("unexpected BasicLit Kind") } - n.Cap = s + if constant.Compare(cap.Val(), token.GEQ, constant.MakeInt64(0)) { + n.Cap = s + } } } if n.Len != nil { @@ -141,9 +144,11 @@ func Funcs(all []*ir.Func) { base.Fatalf("unexpected BasicLit Kind") } - cap, ok := n.Cap.(*ir.BasicLit) - if n.Cap == nil || (ok && constant.Compare(cap.Val(), token.GEQ, len.Val())) { - n.Len = s + if constant.Compare(len.Val(), token.GEQ, constant.MakeInt64(0)) { + cap, ok := n.Cap.(*ir.BasicLit) + if n.Cap == nil || (ok && constant.Compare(cap.Val(), token.GEQ, len.Val())) { + n.Len = s + } } } }