Sometimes Subversion ends in an unterminated loop when checking out to
a full device. Looking at the Windows and OS/2 code, the unix code
seems to be missing a line which changes the loop termination variable
rv.

I promissed Karl Fogel a reproduction recipe, but didn't succeed in
creating one. OTOH, I think it's clear the line needs changing...


bye,


Erik.

PS: it's a patch against trunk. I can supply one for all branches,
because I would very much like it to be backported to 0.9.x, but the
change is so trivial I think using merge is faster....

Index: file_io/unix/readwrite.c
===================================================================
--- file_io/unix/readwrite.c    (revision 233542)
+++ file_io/unix/readwrite.c    (working copy)
@@ -170,7 +170,7 @@
         rv = 0;
         while (rv == 0 && size > 0) {
             if (thefile->bufpos == APR_FILE_BUFSIZE)   /* write
buffer is full*/
-                apr_file_flush(thefile);
+                rv = apr_file_flush(thefile);
  
             blocksize = size > APR_FILE_BUFSIZE - thefile->bufpos ?
                         APR_FILE_BUFSIZE - thefile->bufpos : size;

Reply via email to