diff options
Diffstat (limited to 'libgo/go/os/dir_gccgo.go')
-rw-r--r-- | libgo/go/os/dir_gccgo.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libgo/go/os/dir_gccgo.go b/libgo/go/os/dir_gccgo.go index d811c9f..8923f0e 100644 --- a/libgo/go/os/dir_gccgo.go +++ b/libgo/go/os/dir_gccgo.go @@ -6,6 +6,7 @@ package os import ( "io" + "runtime" "sync/atomic" "syscall" "unsafe" @@ -81,6 +82,11 @@ func (file *File) readdirnames(n int) (names []string, err error) { syscall.Entersyscall() i := libc_readdir_r(file.dirinfo.dir, entryDirent, pr) syscall.Exitsyscall() + // On AIX when readdir_r hits EOF it sets dirent to nil and returns 9. + // https://www.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.basetrf2/readdir_r.htm + if runtime.GOOS == "aix" && i == 9 && dirent == nil { + break + } if i != 0 { return names, NewSyscallError("readdir_r", i) } |