the signed/unsigned change seems to have caused a logic bug on some
[rsync/rsync.git] / flist.c
diff --git a/flist.c b/flist.c
index 0761497..96ed47f 100644 (file)
--- a/flist.c
+++ b/flist.c
@@ -279,13 +279,26 @@ static char *flist_dir;
 static void flist_expand(struct file_list *flist)
 {
        if (flist->count >= flist->malloced) {
+               size_t new_bytes;
+               void *new_ptr;
+               
                if (flist->malloced < 1000)
                        flist->malloced += 1000;
                else
                        flist->malloced *= 2;
-               flist->files = (struct file_struct **)
-                       realloc(flist->files,
-                               sizeof(flist->files[0]) * flist->malloced);
+
+               new_bytes = sizeof(flist->files[0]) * flist->malloced;
+               
+               new_ptr = realloc(flist->files, new_bytes);
+
+               if (verbose >= 2) {
+                       rprintf(FINFO, RSYNC_NAME ": expand file_list to %.0f bytes, did%s move\n",
+                               (double) new_bytes,
+                               (new_ptr == flist->files) ? " not" : "");
+               }
+               
+               flist->files = (struct file_struct **) new_ptr;
+
                if (!flist->files)
                        out_of_memory("flist_expand");
        }
@@ -298,7 +311,7 @@ static void send_file_entry(struct file_struct *file, int f,
        unsigned char flags;
        static time_t last_time;
        static mode_t last_mode;
-       static dev_t last_rdev;
+       static DEV64_T last_rdev;
        static uid_t last_uid;
        static gid_t last_gid;
        static char lastname[MAXPATHLEN];
@@ -417,7 +430,7 @@ static void receive_file_entry(struct file_struct **fptr,
 {
        static time_t last_time;
        static mode_t last_mode;
-       static dev_t last_rdev;
+       static DEV64_T last_rdev;
        static uid_t last_uid;
        static gid_t last_gid;
        static char lastname[MAXPATHLEN];
@@ -669,7 +682,7 @@ struct file_struct *make_file(int f, char *fname, struct string_area **ap,
        file->gid = st.st_gid;
        file->dev = st.st_dev;
        file->inode = st.st_ino;
-#ifdef HAVE_ST_RDEV
+#ifdef HAVE_STRUCT_STAT_ST_RDEV
        file->rdev = st.st_rdev;
 #endif
 
@@ -967,7 +980,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
        }
 
        if (f != -1) {
-               io_end_buffering(f);
+               io_end_buffering();
                stats.flist_size = stats.total_written - start_write;
                stats.num_files = flist->count;
                if (write_batch)        /*  dw  */