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;