From 0dfdf3262deabc735ad979dc5c3d45e62a160dab Mon Sep 17 00:00:00 2001 From: Mateusz Poliwczak Date: Mon, 7 Nov 2022 14:54:52 +0000 Subject: [PATCH] [release-branch.go1.19] sync/atomic: disallow type conversions of atomic.Pointer[T] For #56603. Fixes #56638. Change-Id: I6af9d80201025ae4028bfaa4a62e5de9ac0c501d GitHub-Last-Rev: e6ed5e14512e1221a3c6cb181406cf00eec07e99 GitHub-Pull-Request: golang/go#56604 Reviewed-on: https://go-review.googlesource.com/c/go/+/448275 Reviewed-by: Michael Knyszek Run-TryBot: Ian Lance Taylor TryBot-Result: Gopher Robot Reviewed-by: Ian Lance Taylor (cherry picked from commit 6bead8f77afd2f7317eb011ca019b61ac3d90c17) Reviewed-on: https://go-review.googlesource.com/c/go/+/448518 Run-TryBot: Michael Knyszek --- src/sync/atomic/type.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/sync/atomic/type.go b/src/sync/atomic/type.go index f7b8f5a3b7..2d1e621652 100644 --- a/src/sync/atomic/type.go +++ b/src/sync/atomic/type.go @@ -37,6 +37,10 @@ func b32(b bool) uint32 { // A Pointer is an atomic pointer of type *T. The zero value is a nil *T. type Pointer[T any] struct { + // Mention T in a field to disallow conversion between Pointer types. + // See go.dev/issue/56603 for more details. + _ [0]T + _ noCopy v unsafe.Pointer } -- 2.48.1