The dev/inode of the topmost directory in each hierarchy were not
authorJim Meyering <jim@meyering.net>
Mon, 3 Jul 2006 15:10:35 +0000 (15:10 +0000)
committerJim Meyering <jim@meyering.net>
Mon, 3 Jul 2006 15:10:35 +0000 (15:10 +0000)
being recorded.
* src/remove.c (remove_cwd_entries): Don't call cycle_check here.
(AD_push): Call it from here instead.

ChangeLog
src/remove.c

index 183a8d1..96391a3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2006-07-03  Jim Meyering  <jim@meyering.net>
 
+       The dev/inode of the topmost directory in each hierarchy were not
+       being recorded.
+       * src/remove.c (remove_cwd_entries): Don't call cycle_check here.
+       (AD_push): Call it from here instead.
+
        Fix two small leaks.
        * src/remove.c (AD_stack_clear): New function.
        (rm_1): Use it.
index bc0b92b..f85372b 100644 (file)
@@ -590,6 +590,17 @@ AD_push (int fd_cwd, Dirstack_state *ds, char const *dir,
        }
     }
 
+  if (cycle_check (&ds->cycle_check_state, dir_sb_from_parent))
+    {
+      error (0, 0, _("\
+WARNING: Circular directory structure.\n\
+This almost certainly means that you have a corrupted file system.\n\
+NOTIFY YOUR SYSTEM MANAGER.\n\
+The following directory is part of the cycle:\n  %s\n"),
+            quote (full_filename (".")));
+      longjmp (ds->current_arg_jumpbuf, 1);
+    }
+
   /* Extend the stack.  */
   obstack_blank (&ds->Active_dir, sizeof (struct AD_ent));
 
@@ -1160,17 +1171,6 @@ remove_cwd_entries (DIR **dirp,
                break;
              }
 
-           if (cycle_check (&ds->cycle_check_state, subdir_sb))
-             {
-               error (0, 0, _("\
-WARNING: Circular directory structure.\n\
-This almost certainly means that you have a corrupted file system.\n\
-NOTIFY YOUR SYSTEM MANAGER.\n\
-The following directory is part of the cycle:\n  %s\n"),
-                      quote (full_filename (".")));
-               longjmp (ds->current_arg_jumpbuf, 1);
-             }
-
            *subdir = xstrdup (f);
            if (closedir (*dirp) != 0)
              {