aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/os/dir_gccgo.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/os/dir_gccgo.go')
-rw-r--r--libgo/go/os/dir_gccgo.go6
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)
}