aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/map.go
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2023-08-23 15:19:15 -0700
committerCuong Manh Le <cuong.manhle.vn@gmail.com>2023-08-25 16:10:03 +0000
commitb303fb48558612e5c2a1f10acbc0b1accdb8f260 (patch)
treef34de0757ceb37a21560a8f24e9cccb3cc285a06 /src/runtime/map.go
parent3b4d428ca0efaa309f7254ed378111cf76a1267d (diff)
downloadgo-b303fb48558612e5c2a1f10acbc0b1accdb8f260.tar.xz
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 <cuong.manhle.vn@gmail.com> Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: Bryan Mills <bcmills@google.com> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/runtime/map.go')
-rw-r--r--src/runtime/map.go2
1 files changed, 1 insertions, 1 deletions
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)
}