On Sun, May 02, 2004 at 03:33:03PM -0500, Albert Chin wrote:
> I'm getting a SEGV on a FreeBSD 4.8-STABLE box. The client is Solaris
> 9/SPARC. Both boxes run 2.6.2.
> 
> The command I'm running is:
>   $ rsync -arHRv --numeric-ids --delete --exclude=/opt/dist/cdrom \
>   [paths] [server]:[path]
> 
> If I whittle down what appears in [paths], then it works.

When the --delete option iterates over all the specified [paths] it
clears the delete-file_list after each one.  This makes the "lastdir"
pointer no longer valid.  The appended patch fixes this bug and also
a similar bug that could affect the batch code.

Thanks for the report.

..wayne..
--- flist.c     29 Apr 2004 19:37:15 -0000      1.218
+++ flist.c     3 May 2004 01:24:10 -0000       1.220
@@ -539,6 +539,7 @@ void receive_file_entry(struct file_stru
                rdev_major = 0;
                uid = 0, gid = 0;
                *lastname = '\0';
+               lastdir_len = -1;
                return;
        }
 
@@ -745,7 +746,7 @@ struct file_struct *make_file(char *fnam
        char *basename, *dirname, *bp;
        unsigned short flags = 0;
 
-       if (!flist)     /* lastdir isn't valid if flist is NULL */
+       if (!flist || !flist->count)    /* Ignore lastdir when invalid. */
                lastdir_len = -1;
 
        if (strlcpy(thisname, fname, sizeof thisname)
-- 
To unsubscribe or change options: http://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html

Reply via email to