This is the mail archive of the ecos-patches@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ECOS] bug in fseek


> At first glance there seems to be something funny when its not
> enabled:
> 
>     // Drain read buffer
>     
>     for ( ; whence > 0 ; whence-- ) {
>         err = read_byte( &c );
>         if (err == EAGAIN)
>             err=refill_read_buffer();
>  
>         // if read_byte retured error, or refill_read_buffer returned error
>         if (err) {
>             unlock_me();
>             return err;
>         } // if
>     } // for
> 
> Looping on whence seems very strange to me. I would expect it to loop
> on pos. Jifl, is this a typo?

This has to be wrong. Here is a simple fix. Unfortunately, there does
not seem to be a test case, so i cannot check this breaks anything.

    Andrew

Index: language/c/libc/stdio/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/language/c/libc/stdio/current/ChangeLog,v
retrieving revision 1.16
diff -u -u -r1.16 ChangeLog
--- language/c/libc/stdio/current/ChangeLog     29 May 2002 18:28:27 -0000      1.16
+++ language/c/libc/stdio/current/ChangeLog     2 Sep 2002 07:49:01 -0000
@@ -1,3 +1,8 @@
+2002-09-02  Andrew Lunn  <andrew.lunn@ascom.ch>
+
+       * include/stream.inl (set_position): Fixed typo in none buffered
+       case. Seek pos bytes, not whence bytes.
+
 2002-05-17  Martin Buck  <martin.buck@ascom.ch>
  
        * include/stdio.h (fnprintf): Added printf-format-checking using
Index: language/c/libc/stdio/current/include/stream.inl
===================================================================
RCS file: /cvs/ecos/ecos/packages/language/c/libc/stdio/current/include/stream.inl,v
retrieving revision 1.5
diff -u -u -r1.5 stream.inl
--- language/c/libc/stdio/current/include/stream.inl    23 May 2002 23:07:15 -0000      1.5
+++ language/c/libc/stdio/current/include/stream.inl    2 Sep 2002 07:49:01 -0000
@@ -389,7 +389,7 @@
 
     // Drain read buffer
     
-    for ( ; whence > 0 ; whence-- ) {
+    for ( ; pos > 0 ; pos-- ) {
         err = read_byte( &c );
         if (err == EAGAIN)
             err=refill_read_buffer();


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]