summary refs log tree commit diff
path: root/io/fts.c
diff options
context:
space:
mode:
Diffstat (limited to 'io/fts.c')
-rw-r--r--io/fts.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/io/fts.c b/io/fts.c
index 5e57eaf1b6..cfc8fa656d 100644
--- a/io/fts.c
+++ b/io/fts.c
@@ -570,7 +570,7 @@ fts_build(sp, type)
 	register FTS *sp;
 	int type;
 {
-	register struct dirent *dp;
+	register struct dirent dirbuf, *dp;
 	register FTSENT *p, *head;
 	register int nitems;
 	FTSENT *cur, *tail;
@@ -660,7 +660,8 @@ fts_build(sp, type)
 
 	/* Read the directory, attaching each entry to the `link' pointer. */
 	adjaddr = NULL;
-	for (head = tail = NULL, nitems = 0; dp = readdir(dirp);) {
+	for (head = tail = NULL, nitems = 0;
+	     __readdir_r (dirp, &dirbuf, &dp) >= 0;) {
 		int namlen;
 
 		if (!ISSET(FTS_SEEDOT) && ISDOT(dp->d_name))