]> Savannah Git Hosting - gnulib.git/commitdiff
fts: fix errno handling if dirfd fails
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 26 Sep 2022 01:33:49 +0000 (18:33 -0700)
committerBruno Haible <bruno@clisp.org>
Sun, 1 Jan 2023 09:10:04 +0000 (10:10 +0100)
* 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.

ChangeLog
lib/fts.c

index 5363f048eee3a2f72d3d0e31e59213a9255df0f3..3ae7fcb4a1d34d441eccef436f89d94966efbeb6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2022-09-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       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.
+
 2022-09-24  Bruno Haible  <bruno@clisp.org>
 
        stdalign: Fix compilation error with MSVC in C++ mode.
index db9482712f08e04d3a6efd110b93c47b77ab873d..76ecdcad186329a261f1806e99a0d60f28fa3176 100644 (file)
--- a/lib/fts.c
+++ b/lib/fts.c
@@ -1292,11 +1292,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;
               }