From e8190d9965d9b0b728bffc1d61d8e0ab5da15cac Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Thu, 17 Aug 2023 00:03:41 +0200 Subject: [PATCH] windows: don't check non-existent return code in GetStartupInfo Same as CL 520275 did in package syscall. For golang/go#31316 Change-Id: Ie9d8fed7f40b9e562534d5e91488b4ba1ac44f34 Reviewed-on: https://go-review.googlesource.com/c/sys/+/520295 TryBot-Result: Gopher Robot Reviewed-by: Ian Lance Taylor Auto-Submit: Tobias Klauser Reviewed-by: Dmitri Shuralyov Run-TryBot: Tobias Klauser --- windows/syscall_windows.go | 7 ++++++- windows/syscall_windows_test.go | 9 +++++++++ windows/zsyscall_windows.go | 7 ++----- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/windows/syscall_windows.go b/windows/syscall_windows.go index 88e60c876..67bad0926 100644 --- a/windows/syscall_windows.go +++ b/windows/syscall_windows.go @@ -216,7 +216,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath //sys TerminateProcess(handle Handle, exitcode uint32) (err error) //sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) -//sys GetStartupInfo(startupInfo *StartupInfo) (err error) = GetStartupInfoW +//sys getStartupInfo(startupInfo *StartupInfo) = GetStartupInfoW //sys GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) //sys DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) //sys WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] @@ -1628,6 +1628,11 @@ func SetConsoleCursorPosition(console Handle, position Coord) error { return setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position)))) } +func GetStartupInfo(startupInfo *StartupInfo) error { + getStartupInfo(startupInfo) + return nil +} + func (s NTStatus) Errno() syscall.Errno { return rtlNtStatusToDosErrorNoTeb(s) } diff --git a/windows/syscall_windows_test.go b/windows/syscall_windows_test.go index 8b51547d1..bf53ab5f9 100644 --- a/windows/syscall_windows_test.go +++ b/windows/syscall_windows_test.go @@ -1173,3 +1173,12 @@ func TestTimePeriod(t *testing.T) { t.Fatal(err) } } + +func TestGetStartupInfo(t *testing.T) { + var si windows.StartupInfo + err := windows.GetStartupInfo(&si) + if err != nil { + // see https://go.dev/issue/31316 + t.Fatalf("GetStartupInfo: got error %v, want nil", err) + } +} diff --git a/windows/zsyscall_windows.go b/windows/zsyscall_windows.go index 1c31758ea..5c385580f 100644 --- a/windows/zsyscall_windows.go +++ b/windows/zsyscall_windows.go @@ -2370,11 +2370,8 @@ func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uin return } -func GetStartupInfo(startupInfo *StartupInfo) (err error) { - r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0) - if r1 == 0 { - err = errnoErr(e1) - } +func getStartupInfo(startupInfo *StartupInfo) { + syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0) return }