mirror of
https://github.com/golang/go
synced 2024-11-26 01:17:57 -07:00
syscall: use correct type for TIOCSPGRP/TIOCGPGRP
These ioctls take a pid_t (generally a C integer aka int32) and not an int64 - we currently get away with this on little endian 64 bit platforms, since the bytes fall into the correct place, however this breaks on big endian 64 bit platforms (like openbsd/mips64). Update #40995 Change-Id: I622a0543fd562d97f76a7376a84fd2641e6d6a24 Reviewed-on: https://go-review.googlesource.com/c/go/+/267605 Trust: Joel Sing <joel@sing.id.au> Run-TryBot: Joel Sing <joel@sing.id.au> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
30ba798093
commit
31f71506d7
@ -117,14 +117,16 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr
|
||||
}
|
||||
|
||||
if sys.Foreground {
|
||||
pgrp := sys.Pgid
|
||||
// This should really be pid_t, however _C_int (aka int32) is
|
||||
// generally equivalent.
|
||||
pgrp := _C_int(sys.Pgid)
|
||||
if pgrp == 0 {
|
||||
r1, _, err1 = RawSyscall(SYS_GETPID, 0, 0, 0)
|
||||
if err1 != 0 {
|
||||
goto childerror
|
||||
}
|
||||
|
||||
pgrp = int(r1)
|
||||
pgrp = _C_int(r1)
|
||||
}
|
||||
|
||||
// Place process group in foreground.
|
||||
|
@ -172,7 +172,9 @@ func TestForeground(t *testing.T) {
|
||||
t.Skipf("Can't test Foreground. Couldn't open /dev/tty: %s", err)
|
||||
}
|
||||
|
||||
fpgrp := 0
|
||||
// This should really be pid_t, however _C_int (aka int32) is generally
|
||||
// equivalent.
|
||||
fpgrp := int32(0)
|
||||
|
||||
errno := syscall.Ioctl(tty.Fd(), syscall.TIOCGPGRP, uintptr(unsafe.Pointer(&fpgrp)))
|
||||
if errno != 0 {
|
||||
|
Loading…
Reference in New Issue
Block a user