Index: lib/libc/gen/readdir.c =================================================================== RCS file: /cvsroot/src/lib/libc/gen/readdir.c,v retrieving revision 1.26 diff -p -u -r1.26 readdir.c --- lib/libc/gen/readdir.c 25 Jun 2012 22:32:43 -0000 1.26 +++ lib/libc/gen/readdir.c 31 Aug 2024 14:55:42 -0000 @@ -91,7 +91,10 @@ struct dirent * readdir(DIR *dirp) { struct dirent *dp; + int saved_errno; + saved_errno = errno; + errno = 0; #ifdef _REENTRANT if (__isthreaded) { mutex_lock((mutex_t *)dirp->dd_lock); @@ -101,6 +104,10 @@ readdir(DIR *dirp) else #endif dp = _readdir_unlocked(dirp, 1); + + if (errno == 0 && dp == NULL) + errno = saved_errno; + return (dp); }