diff options
author | Jim Meyering <jim@meyering.net> | 2004-10-21 10:37:18 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2004-10-21 10:37:18 +0000 |
commit | 2469a229d50e549d149de43bfac3e1bf13b4b6ee (patch) | |
tree | d04135cdc15e64b02739d67a07d96eec4c909528 | |
parent | 0f8445ab90d9f4a3496a3a0382ca22112805a5ea (diff) | |
download | coreutils-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.
-rw-r--r-- | src/remove.c | 8 |
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; |