use Realloc instead of realloc
[rsync/rsync.git] / rsync.c
diff --git a/rsync.c b/rsync.c
index 555c009..b61128b 100644 (file)
--- a/rsync.c
+++ b/rsync.c
@@ -74,6 +74,7 @@ static int delete_file(char *fname)
        extern int force_delete;
        STRUCT_STAT st;
        int ret;
+       extern int recurse;
 
        if (do_unlink(fname) == 0 || errno == ENOENT) return 0;
 
@@ -93,7 +94,8 @@ static int delete_file(char *fname)
        }
 
        if (do_rmdir(fname) == 0 || errno == ENOENT) return 0;
-       if (!force_delete || (errno != ENOTEMPTY && errno != EEXIST)) {
+       if (!force_delete || !recurse || 
+           (errno != ENOTEMPTY && errno != EEXIST)) {
                rprintf(FERROR,"rmdir(%s) : %s\n", fname, strerror(errno));
                return -1;
        }
@@ -636,11 +638,7 @@ static void add_delete_entry(struct file_struct *file)
 {
        if (dlist_len == dlist_alloc_len) {
                dlist_alloc_len += 1024;
-               if (!delete_list) {
-                       delete_list = (struct delete_list *)malloc(sizeof(delete_list[0])*dlist_alloc_len);
-               } else {
-                       delete_list = (struct delete_list *)realloc(delete_list, sizeof(delete_list[0])*dlist_alloc_len);
-               }
+               delete_list = (struct delete_list *)Realloc(delete_list, sizeof(delete_list[0])*dlist_alloc_len);
                if (!delete_list) out_of_memory("add_delete_entry");
        }