Mention the EEXIST fix.
[rsync.git] / flist.c
diff --git a/flist.c b/flist.c
index c342539..64ff007 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,9 +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. */
-                       j = flist->files[drop]->flags & (FLAG_TOP_DIR|FLAG_DEL_HERE);
-                       if (j)
-                               flist->files[keep]->flags |= j;
+                       flist->files[keep]->flags |= flist->files[drop]->flags
+                                                  & (FLAG_TOP_DIR|FLAG_DEL_HERE);
 
                        clear_file(drop, flist);