diff options
| author | Ian Lance Taylor <iant@golang.org> | 2022-11-11 12:42:51 -0800 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2022-11-11 23:24:12 +0000 |
| commit | 122a22e0e9eba7fe712030d429fc4bcf6f447f5e (patch) | |
| tree | 70a73ef22581e2b649e483b1d108132e57a73418 /src/internal/syscall | |
| parent | 7e4191e686c192b9c85065fd3b8775190d3e9c5f (diff) | |
| download | go-122a22e0e9eba7fe712030d429fc4bcf6f447f5e.tar.xz | |
internal/syscall/unix: use runtime.gostring for Gostring
Under the race detector, checkptr flags uses of unsafe.Slice that
result in slices that straddle multiple Go allocations.
Avoid that scenario by calling existing runtime code.
This fixes a failure on the darwin-.*-race builders introduced in
CL 446178.
Change-Id: I6e0fdb37e3c3f38d97939a8799bb4d10f519c5b9
Reviewed-on: https://go-review.googlesource.com/c/go/+/449936
Reviewed-by: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Auto-Submit: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/internal/syscall')
| -rw-r--r-- | src/internal/syscall/unix/net_darwin.go | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/internal/syscall/unix/net_darwin.go b/src/internal/syscall/unix/net_darwin.go index 9840359693..b9da4f1dc7 100644 --- a/src/internal/syscall/unix/net_darwin.go +++ b/src/internal/syscall/unix/net_darwin.go @@ -95,17 +95,11 @@ func GaiStrerror(ecode int) string { return GoString((*byte)(unsafe.Pointer(r1))) } +// Implemented in the runtime package. +func gostring(*byte) string + func GoString(p *byte) string { - if p == nil { - return "" - } - x := unsafe.Slice(p, 1e9) - for i, c := range x { - if c == 0 { - return string(x[:i]) - } - } - return "" + return gostring(p) } //go:linkname syscall_syscall syscall.syscall |
