From b303fb48558612e5c2a1f10acbc0b1accdb8f260 Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Wed, 23 Aug 2023 15:19:15 -0700 Subject: runtime: fix maps.Clone bug when cloning a map mid-grow Fixes #62203 Change-Id: I0459d3f481b0cd20102f6d9fd3ea84335a7739a8 Reviewed-on: https://go-review.googlesource.com/c/go/+/522317 Reviewed-by: Cuong Manh Le Reviewed-by: Keith Randall Reviewed-by: Bryan Mills Run-TryBot: Keith Randall TryBot-Result: Gopher Robot --- src/runtime/map.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/runtime/map.go') diff --git a/src/runtime/map.go b/src/runtime/map.go index 5d4e470b9e..e6d651f688 100644 --- a/src/runtime/map.go +++ b/src/runtime/map.go @@ -1553,7 +1553,7 @@ func mapclone2(t *maptype, src *hmap) *hmap { } if oldB >= dst.B { // main bucket bits in dst is less than oldB bits in src - dstBmap := (*bmap)(add(dst.buckets, uintptr(i)&bucketMask(dst.B))) + dstBmap := (*bmap)(add(dst.buckets, (uintptr(i)&bucketMask(dst.B))*uintptr(t.BucketSize))) for dstBmap.overflow(t) != nil { dstBmap = dstBmap.overflow(t) } -- cgit v1.3-6-g1900