Mention the EEXIST fix.
[rsync.git] / flist.c
diff --git a/flist.c b/flist.c
index 5058cc5e2413a9a6b83b1a97d7676b8f27e14655..64ff00771249678b6b7e4daf875ee2da4d597fd0 100644 (file)
--- a/flist.c
+++ b/flist.c
@@ -1471,8 +1471,12 @@ static void clean_flist(struct file_list *flist, int strip_root, int no_dups)
 {
        int i, prev_i = 0;
 
-       if (!flist || flist->count == 0)
+       if (!flist)
+               return;
+       if (flist->count == 0) {
+               flist->high = -1;
                return;
+       }
 
        sorting_flist = flist;
        qsort(flist->files, flist->count,
@@ -1524,8 +1528,8 @@ static void clean_flist(struct file_list *flist, int strip_root, int no_dups)
                        }
                        /* Make sure that if we unduplicate '.', that we don't
                         * lose track of a user-specified top directory. */
-                       if (flist->files[drop]->flags & FLAG_TOP_DIR)
-                               flist->files[keep]->flags |= FLAG_TOP_DIR;
+                       flist->files[keep]->flags |= flist->files[drop]->flags
+                                                  & (FLAG_TOP_DIR|FLAG_DEL_HERE);
 
                        clear_file(drop, flist);