diff --git a/src/os/error_errno.go b/src/os/error_errno.go index 01204131be163b..c4d540cdff0944 100644 --- a/src/os/error_errno.go +++ b/src/os/error_errno.go @@ -11,3 +11,4 @@ import "syscall" type syscallErrorType = syscall.Errno const errENOSYS = syscall.ENOSYS +const errERANGE = syscall.ERANGE diff --git a/src/os/error_plan9.go b/src/os/error_plan9.go index 39e96607e197cc..61b56211b4917b 100644 --- a/src/os/error_plan9.go +++ b/src/os/error_plan9.go @@ -9,3 +9,4 @@ import "syscall" type syscallErrorType = syscall.ErrorString var errENOSYS = syscall.NewError("function not implemented") +var errERANGE = syscall.NewError("out of range") diff --git a/src/os/getwd.go b/src/os/getwd.go index 833381c2d25630..8dca70fc2e582e 100644 --- a/src/os/getwd.go +++ b/src/os/getwd.go @@ -59,7 +59,10 @@ func Getwd() (dir string, err error) { break } } - if err != syscall.ENAMETOOLONG { + // Linux returns ENAMETOOLONG if the result is too long. + // BSD systems appear to return EINVAL. + // Solaris appears to use ERANGE. + if err != syscall.ENAMETOOLONG && err != syscall.EINVAL && err != errERANGE { return dir, NewSyscallError("getwd", err) } }