diff --git a/src/pkg/syscall/syscall_bsd.go b/src/pkg/syscall/syscall_bsd.go index a62cbe283595af79eeb5af42fc1f4e0e3a1a307b..71efced3d8a2c82f30edf219310ac0c658db5dff 100644 --- a/src/pkg/syscall/syscall_bsd.go +++ b/src/pkg/syscall/syscall_bsd.go @@ -64,8 +64,11 @@ func Setgroups(gids []int) (err error) { func ReadDirent(fd int, buf []byte) (n int, err error) { // Final argument is (basep *uintptr) and the syscall doesn't take nil. + // 64 bits should be enough. (32 bits isn't even on 386). Since the + // actual system call is getdirentries64, 64 is a good guess. // TODO(rsc): Can we use a single global basep for all calls? - return Getdirentries(fd, buf, new(uintptr)) + var base = (*uintptr)(unsafe.Pointer(new(uint64))) + return Getdirentries(fd, buf, base) } // Wait status is 7 bits at bottom, either 0 (exited),