summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2022-09-25 18:33:49 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2022-09-25 18:35:56 -0700
commit37f96b7066116661ea4b9e82ed04e767eedc0d1d (patch)
tree84b62596091f066619f7c89c904f32809bec4807 /lib
parent9187f1c193767b7a09a2d9ef8e72f6f0dabd3250 (diff)
downloadgnulib-37f96b7066116661ea4b9e82ed04e767eedc0d1d.tar.gz
fts: fix errno handling if dirfd fails
* lib/fts.c (fts_build): Use proper errno if dirfd failed. Although I don’t know of any platform where dirfd can fail here, we might as well get it right.
Diffstat (limited to 'lib')
-rw-r--r--lib/fts.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/fts.c b/lib/fts.c
index 954cbb7b40..5811f6ea20 100644
--- a/lib/fts.c
+++ b/lib/fts.c
@@ -1290,11 +1290,12 @@ fts_build (register FTS *sp, int type)
dir_fd = dirfd (dp);
if (dir_fd < 0)
{
+ int dirfd_errno = errno;
closedir_and_clear (cur->fts_dirp);
if (type == BREAD)
{
cur->fts_info = FTS_DNR;
- cur->fts_errno = errno;
+ cur->fts_errno = dirfd_errno;
}
return NULL;
}