# HG changeset patch # User Yuya Nishihara # Date 1604369750 -32400 # Node ID 9534de20358f656be05e0633a3a2ba59932326f3 # Parent 731ea8fa1f110b2856826db5ed78fc1178dc1306 chg: do not close dir fd while iterating It works so long as the dp is the last entry, but readdir(dp) would fail with EBADF. Let's not do that and close the dir fd explicitly. diff -r 731ea8fa1f11 -r 9534de20358f contrib/chg/chg.c --- a/contrib/chg/chg.c Tue Nov 03 11:12:25 2020 +0900 +++ b/contrib/chg/chg.c Tue Nov 03 11:15:50 2020 +0900 @@ -288,7 +288,7 @@ de->d_name); continue; } - if (fd_value > STDERR_FILENO) { + if (fd_value > STDERR_FILENO && fd_value != dirfd(dp)) { debugmsg("closing fd %ld", fd_value); int res = close(fd_value); if (res) { @@ -298,6 +298,7 @@ } } } + closedir(dp); } if (putenv("CHGINTERNALMARK=") != 0)