You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by tr...@apache.org on 2004/05/04 02:07:33 UTC

cvs commit: apr/test testfile.c

trawick     2004/05/03 17:07:33

  Modified:    .        CHANGES
               file_io/os2 seek.c
               file_io/unix seek.c
               file_io/win32 seek.c
               test     testfile.c
  Log:
  Fix sign error in apr_file_seek().
  
  Submitted by:	Greg Hudson <ghudson MIT.EDU>
  Reviewed by:	Jeff Trawick
  
  Revision  Changes    Path
  1.464     +3 -0      apr/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apr/CHANGES,v
  retrieving revision 1.463
  retrieving revision 1.464
  diff -u -r1.463 -r1.464
  --- CHANGES	21 Apr 2004 21:11:21 -0000	1.463
  +++ CHANGES	4 May 2004 00:07:32 -0000	1.464
  @@ -7,6 +7,9 @@
   
   Changes with APR 1.0
   
  +  *) Fix sign error in apr_file_seek(APR_END).
  +     [Greg Hudson <ghudson MIT.EDU>]
  +
     *) Support setuid, setgid and sticky file permissions bits on Unix.
        [Andr� Malo]
   
  
  
  
  1.27      +1 -1      apr/file_io/os2/seek.c
  
  Index: seek.c
  ===================================================================
  RCS file: /home/cvs/apr/file_io/os2/seek.c,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- seek.c	13 Feb 2004 09:38:24 -0000	1.26
  +++ seek.c	4 May 2004 00:07:32 -0000	1.27
  @@ -70,7 +70,7 @@
           case APR_END:
               rc = apr_file_info_get(&finfo, APR_FINFO_NORM, thefile);
               if (rc == APR_SUCCESS)
  -                rc = setptr(thefile, finfo.size - *offset);
  +                rc = setptr(thefile, finfo.size + *offset);
               break;
           }
   
  
  
  
  1.35      +1 -1      apr/file_io/unix/seek.c
  
  Index: seek.c
  ===================================================================
  RCS file: /home/cvs/apr/file_io/unix/seek.c,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- seek.c	27 Mar 2004 13:11:17 -0000	1.34
  +++ seek.c	4 May 2004 00:07:32 -0000	1.35
  @@ -69,7 +69,7 @@
           case APR_END:
               rc = apr_file_info_get(&finfo, APR_FINFO_SIZE, thefile);
               if (rc == APR_SUCCESS)
  -                rc = setptr(thefile, finfo.size - *offset);
  +                rc = setptr(thefile, finfo.size + *offset);
               break;
           }
   
  
  
  
  1.29      +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.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- seek.c	13 Feb 2004 09:38:27 -0000	1.28
  +++ seek.c	4 May 2004 00:07:32 -0000	1.29
  @@ -73,7 +73,7 @@
               case APR_END:
                   rc = apr_file_info_get(&finfo, APR_FINFO_SIZE, thefile);
                   if (rc == APR_SUCCESS)
  -                    rc = setptr(thefile, finfo.size - *offset);
  +                    rc = setptr(thefile, finfo.size + *offset);
                   break;
   
               default:
  
  
  
  1.73      +21 -0     apr/test/testfile.c
  
  Index: testfile.c
  ===================================================================
  RCS file: /home/cvs/apr/test/testfile.c,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- testfile.c	13 Feb 2004 09:38:34 -0000	1.72
  +++ testfile.c	4 May 2004 00:07:32 -0000	1.73
  @@ -228,6 +228,27 @@
       CuAssertStrEquals(tc, TESTSTR + 5, str);
   
       apr_file_close(filetest);
  +
  +    /* Test for regression of sign error bug with SEEK_END and
  +       buffered files. */
  +    rv = apr_file_open(&filetest, FILENAME,
  +                       APR_READ | APR_BUFFERED,
  +                       APR_UREAD | APR_UWRITE | APR_GREAD, p);
  +    apr_assert_success(tc, "Open test file " FILENAME, rv);
  +
  +    offset = -5;
  +    rv = apr_file_seek(filetest, SEEK_END, &offset);
  +    CuAssertIntEquals(tc, APR_SUCCESS, rv);
  +    CuAssertIntEquals(tc, strlen(TESTSTR) - 5, nbytes);
  +
  +    memset(str, 0, nbytes + 1);
  +    nbytes = 256;
  +    rv = apr_file_read(filetest, str, &nbytes);
  +    CuAssertIntEquals(tc, APR_SUCCESS, rv);
  +    CuAssertIntEquals(tc, 5, nbytes);
  +    CuAssertStrEquals(tc, TESTSTR + strlen(TESTSTR) - 5, str);
  +
  +    apr_file_close(filetest);
   }                
   
   static void test_userdata_set(CuTest *tc)