wrowe       01/08/27 18:56:09

  Modified:    file_io/win32 readwrite.c seek.c
  Log:
    Found a very ugly reaction to using apr_file_seek(APR_CUR, -value) in
    conjuction with buffered reads.  Thank you for toggling that case Jeff,
    so I could shoot out this bug ;)
  
  Revision  Changes    Path
  1.61      +9 -6      apr/file_io/win32/readwrite.c
  
  Index: readwrite.c
  ===================================================================
  RCS file: /home/cvs/apr/file_io/win32/readwrite.c,v
  retrieving revision 1.60
  retrieving revision 1.61
  diff -u -r1.60 -r1.61
  --- readwrite.c       2001/06/20 00:56:02     1.60
  +++ readwrite.c       2001/08/28 01:56:09     1.61
  @@ -159,7 +159,7 @@
   
   APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, 
apr_size_t *len)
   {
  -    apr_size_t rv;
  +    apr_status_t rv;
       DWORD bytes_read = 0;
   
       if (*len <= 0) {
  @@ -196,16 +196,19 @@
           rv = 0;
           while (rv == 0 && size > 0) {
               if (thefile->bufpos >= thefile->dataRead) {
  +                apr_size_t read;
                   rv = read_with_timeout(thefile, thefile->buffer, 
  -                                       APR_FILE_BUFSIZE, &thefile->dataRead);
  -                if (thefile->dataRead == 0) {
  +                                       APR_FILE_BUFSIZE, &read);
  +                if (read == 0) {
                       if (rv == APR_EOF)
                           thefile->eof_hit = TRUE;
                       break;
                   }
  -
  -                thefile->filePtr += thefile->dataRead;
  -                thefile->bufpos = 0;
  +                else {
  +                    thefile->dataRead = read;
  +                    thefile->filePtr += thefile->dataRead;
  +                    thefile->bufpos = 0;
  +                }
               }
   
               blocksize = size > thefile->dataRead - thefile->bufpos ? 
thefile->dataRead - thefile->bufpos : size;
  
  
  
  1.20      +1 -1      apr/file_io/win32/seek.c
  
  Index: seek.c
  ===================================================================
  RCS file: /home/cvs/apr/file_io/win32/seek.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- seek.c    2001/07/31 19:51:34     1.19
  +++ seek.c    2001/08/28 01:56:09     1.20
  @@ -82,7 +82,7 @@
           else
               rc = APR_SUCCESS;
           if (rc == APR_SUCCESS)
  -            thefile->bufpos = thefile->dataRead = 0;
  +            thefile->eof_hit = thefile->bufpos = thefile->dataRead = 0;
       }
   
       return rc;
  
  
  

Reply via email to