]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.19] sync/atomic: disallow type conversions of atomic.Pointer[T]
authorMateusz Poliwczak <mpoliwczak34@gmail.com>
Mon, 7 Nov 2022 14:54:52 +0000 (14:54 +0000)
committerMichael Knyszek <mknyszek@google.com>
Fri, 11 Nov 2022 20:45:57 +0000 (20:45 +0000)
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 <mknyszek@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
(cherry picked from commit 6bead8f77afd2f7317eb011ca019b61ac3d90c17)
Reviewed-on: https://go-review.googlesource.com/c/go/+/448518
Run-TryBot: Michael Knyszek <mknyszek@google.com>

src/sync/atomic/type.go

index f7b8f5a3b749599d51b93e60e0731a5628046235..2d1e62165226903df9a1dc1136e996b14e192451 100644 (file)
@@ -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
 }