From 258ee61c7240b7b147a672fdff9552981a182447 Mon Sep 17 00:00:00 2001 From: Alex Brainman Date: Sun, 6 Apr 2014 12:18:01 +1000 Subject: [PATCH] syscall: use unsafe.Pointer instead of uintptr on windows when possible Fixes #7171 LGTM=iant R=golang-codereviews, iant CC=golang-codereviews https://golang.org/cl/84330043 --- src/pkg/syscall/syscall_windows.go | 24 +++++++++++------------ src/pkg/syscall/zsyscall_windows_386.go | 4 ++-- src/pkg/syscall/zsyscall_windows_amd64.go | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/pkg/syscall/syscall_windows.go b/src/pkg/syscall/syscall_windows.go index 4436e432a4..f9733f6cee 100644 --- a/src/pkg/syscall/syscall_windows.go +++ b/src/pkg/syscall/syscall_windows.go @@ -523,8 +523,8 @@ const socket_error = uintptr(^uint32(0)) //sys socket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket //sys Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt //sys Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt -//sys bind(s Handle, name uintptr, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind -//sys connect(s Handle, name uintptr, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect +//sys bind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind +//sys connect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect //sys getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname //sys getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername //sys listen(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen @@ -579,7 +579,7 @@ type RawSockaddrAny struct { } type Sockaddr interface { - sockaddr() (ptr uintptr, len int32, err error) // lowercase; only we can define Sockaddrs + sockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs } type SockaddrInet4 struct { @@ -588,9 +588,9 @@ type SockaddrInet4 struct { raw RawSockaddrInet4 } -func (sa *SockaddrInet4) sockaddr() (uintptr, int32, error) { +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) { if sa.Port < 0 || sa.Port > 0xFFFF { - return 0, 0, EINVAL + return nil, 0, EINVAL } sa.raw.Family = AF_INET p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) @@ -599,7 +599,7 @@ func (sa *SockaddrInet4) sockaddr() (uintptr, int32, error) { for i := 0; i < len(sa.Addr); i++ { sa.raw.Addr[i] = sa.Addr[i] } - return uintptr(unsafe.Pointer(&sa.raw)), int32(unsafe.Sizeof(sa.raw)), nil + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil } type SockaddrInet6 struct { @@ -609,9 +609,9 @@ type SockaddrInet6 struct { raw RawSockaddrInet6 } -func (sa *SockaddrInet6) sockaddr() (uintptr, int32, error) { +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) { if sa.Port < 0 || sa.Port > 0xFFFF { - return 0, 0, EINVAL + return nil, 0, EINVAL } sa.raw.Family = AF_INET6 p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) @@ -621,16 +621,16 @@ func (sa *SockaddrInet6) sockaddr() (uintptr, int32, error) { for i := 0; i < len(sa.Addr); i++ { sa.raw.Addr[i] = sa.Addr[i] } - return uintptr(unsafe.Pointer(&sa.raw)), int32(unsafe.Sizeof(sa.raw)), nil + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil } type SockaddrUnix struct { Name string } -func (sa *SockaddrUnix) sockaddr() (uintptr, int32, error) { +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) { // TODO(brainman): implement SockaddrUnix.sockaddr() - return 0, 0, EWINDOWS + return nil, 0, EWINDOWS } func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { @@ -754,7 +754,7 @@ func LoadConnectEx() error { return connectExFunc.err } -func connectEx(s Handle, name uintptr, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) { +func connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) { r1, _, e1 := Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0) if r1 == 0 { if e1 != 0 { diff --git a/src/pkg/syscall/zsyscall_windows_386.go b/src/pkg/syscall/zsyscall_windows_386.go index e68ea5748b..132adafeff 100644 --- a/src/pkg/syscall/zsyscall_windows_386.go +++ b/src/pkg/syscall/zsyscall_windows_386.go @@ -1323,7 +1323,7 @@ func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int3 return } -func bind(s Handle, name uintptr, namelen int32) (err error) { +func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { r1, _, e1 := Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) if r1 == socket_error { if e1 != 0 { @@ -1335,7 +1335,7 @@ func bind(s Handle, name uintptr, namelen int32) (err error) { return } -func connect(s Handle, name uintptr, namelen int32) (err error) { +func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) { r1, _, e1 := Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) if r1 == socket_error { if e1 != 0 { diff --git a/src/pkg/syscall/zsyscall_windows_amd64.go b/src/pkg/syscall/zsyscall_windows_amd64.go index 049b5ecbaa..353a6fd980 100644 --- a/src/pkg/syscall/zsyscall_windows_amd64.go +++ b/src/pkg/syscall/zsyscall_windows_amd64.go @@ -1323,7 +1323,7 @@ func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int3 return } -func bind(s Handle, name uintptr, namelen int32) (err error) { +func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { r1, _, e1 := Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) if r1 == socket_error { if e1 != 0 { @@ -1335,7 +1335,7 @@ func bind(s Handle, name uintptr, namelen int32) (err error) { return } -func connect(s Handle, name uintptr, namelen int32) (err error) { +func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) { r1, _, e1 := Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) if r1 == socket_error { if e1 != 0 { -- 2.50.0