summaryrefslogtreecommitdiff
path: root/src/remove.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2004-10-21 10:37:18 +0000
committerJim Meyering <jim@meyering.net>2004-10-21 10:37:18 +0000
commit2469a229d50e549d149de43bfac3e1bf13b4b6ee (patch)
treed04135cdc15e64b02739d67a07d96eec4c909528 /src/remove.c
parent0f8445ab90d9f4a3496a3a0382ca22112805a5ea (diff)
downloadcoreutils-2469a229d50e549d149de43bfac3e1bf13b4b6ee.tar.xz
Correct my patch of 2004-10-18.
(rm): Destroy the saved_cwd here (via cwd_state), if necessary, not in remove_dir. Otherwise, removing multiple `.'-relative nonempty directories no longer worked.
Diffstat (limited to 'src/remove.c')
-rw-r--r--src/remove.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/remove.c b/src/remove.c
index 6ff47c97c..8f381ae5d 100644
--- a/src/remove.c
+++ b/src/remove.c
@@ -1151,10 +1151,7 @@ remove_dir (Dirstack_state *ds, char const *dir, struct cwd_state **cwd_state,
free (empty_dir);
if (AD_stack_height (ds) == 1)
- {
- free_cwd (&AD_stack_top(ds)->u.saved_cwd);
- break;
- }
+ break;
}
}
@@ -1235,6 +1232,9 @@ rm (size_t n_files, char const *const *file, struct rm_options const *x)
ds_free (ds);
+ if (cwd_state && cwd_state->saved_errno == 0)
+ free_cwd (&cwd_state->saved_cwd);
+
free (cwd_state);
return status;