aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorapocelipes <seve3r@outlook.com>2024-04-04 06:59:50 +0000
committerGopher Robot <gobot@golang.org>2024-04-04 14:46:19 +0000
commit0f10ffec13a1eecb2b18e0b9d75773faf42e7ebd (patch)
tree2824616635da100a8ee75932265b69e7df487920
parent7dd8f39ebac6d8b27c0ad7cf421aa5d71f155220 (diff)
downloadgo-0f10ffec13a1eecb2b18e0b9d75773faf42e7ebd.tar.xz
expvar: add the missing deletion step for keys
In CL575777 I forgot to remove the key from the "sync.Map". This did not cause the test to fail due to the lack of an associated testcase. Now delete the key correctly and add the testcase. Change-Id: I26f770966a828caa02f1766675756b67894dc195 GitHub-Last-Rev: a351ce095b5256fd1351d71f09ba38fdcdfce3d9 GitHub-Pull-Request: golang/go#66675 Reviewed-on: https://go-review.googlesource.com/c/go/+/576395 Auto-Submit: Keith Randall <khr@golang.org> Reviewed-by: qiu laidongfeng2 <2645477756@qq.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Keith Randall <khr@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Keith Randall <khr@google.com>
-rw-r--r--src/expvar/expvar.go1
-rw-r--r--src/expvar/expvar_test.go6
2 files changed, 7 insertions, 0 deletions
diff --git a/src/expvar/expvar.go b/src/expvar/expvar.go
index a30963c5a8..ffe35d62f9 100644
--- a/src/expvar/expvar.go
+++ b/src/expvar/expvar.go
@@ -249,6 +249,7 @@ func (v *Map) Delete(key string) {
i, found := slices.BinarySearch(v.keys, key)
if found {
v.keys = slices.Delete(v.keys, i, i+1)
+ v.m.Delete(key)
}
}
diff --git a/src/expvar/expvar_test.go b/src/expvar/expvar_test.go
index b827c4d621..def8417953 100644
--- a/src/expvar/expvar_test.go
+++ b/src/expvar/expvar_test.go
@@ -199,6 +199,9 @@ func TestMapDelete(t *testing.T) {
}
colors.Delete("red")
+ if v := colors.Get("red"); v != nil {
+ t.Errorf("removed red, Get should return nil; got %v", v)
+ }
n = 0
colors.Do(func(KeyValue) { n++ })
if n != 1 {
@@ -214,6 +217,9 @@ func TestMapDelete(t *testing.T) {
colors.Delete("blue")
colors.Delete("blue")
+ if v := colors.Get("blue"); v != nil {
+ t.Errorf("removed blue, Get should return nil; got %v", v)
+ }
n = 0
colors.Do(func(KeyValue) { n++ })
if n != 0 {