summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--src/ls.c2
2 files changed, 6 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index a90e169dd..d0de2f44c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2007-01-29 Jim Meyering <jim@meyering.net>
+ Plug a leak in ls.
+ * src/ls.c (print_dir): Don't leak a "DIR"+fd upon failure to
+ determine dev/inode or upon detecting a symlink loop.
+
* src/ls.c: Rename three global variables.
(cwd_file): Rename from 'files'.
(cwd_n_alloc): Rename from 'nfiles'.
diff --git a/src/ls.c b/src/ls.c
index 4a6d7c1fb..dbcc83ef4 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -2342,6 +2342,7 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
{
file_failure (command_line_arg,
_("cannot determine device and inode of %s"), name);
+ closedir (dirp);
return;
}
@@ -2351,6 +2352,7 @@ print_dir (char const *name, char const *realname, bool command_line_arg)
{
error (0, 0, _("%s: not listing already-listed directory"),
quotearg_colon (name));
+ closedir (dirp);
return;
}