From 94953d3e5928c8a577bad7911aabbf627269ef77 Mon Sep 17 00:00:00 2001 From: Changkun Ou Date: Mon, 24 Aug 2020 13:45:27 +0200 Subject: sync: delete dirty keys inside Map.LoadAndDelete Fixes #40999 Change-Id: Ie32427e5cb5ed512b976b554850f50be156ce9f2 Reviewed-on: https://go-review.googlesource.com/c/go/+/250197 Run-TryBot: Emmanuel Odeke TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/sync/map.go | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sync/map.go') diff --git a/src/sync/map.go b/src/sync/map.go index a61e2ebdd6..9ad25353ff 100644 --- a/src/sync/map.go +++ b/src/sync/map.go @@ -274,6 +274,7 @@ func (m *Map) LoadAndDelete(key interface{}) (value interface{}, loaded bool) { e, ok = read.m[key] if !ok && read.amended { e, ok = m.dirty[key] + delete(m.dirty, key) // Regardless of whether the entry was present, record a miss: this key // will take the slow path until the dirty map is promoted to the read // map. -- cgit v1.3