From 783c1092ff52e4739096b42dd5d6426fb90b4369 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Tue, 26 Aug 2014 23:12:18 +0200 Subject: [PATCH] Fix readdir() setting errno on success. --- libc/dirent/fdopendir.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libc/dirent/fdopendir.cpp b/libc/dirent/fdopendir.cpp index 28e66d7b..329a5bcc 100644 --- a/libc/dirent/fdopendir.cpp +++ b/libc/dirent/fdopendir.cpp @@ -54,10 +54,12 @@ static int fddir_sortix_readents(fddir_sortix_t* info) return -1; } + int saved_errno = errno; if ( readdirents(info->fd, info->dirent, info->direntsize) < 0 ) { if ( errno != ERANGE ) return -1; + errno = saved_errno; size_t newdirentsize = sizeof(struct kernel_dirent) + info->dirent->d_namlen + 1; if ( newdirentsize < info->direntsize ) newdirentsize *= 2;