This is the mail archive of the
ecos-patches@sources.redhat.com
mailing list for the eCos project.
Re: [ECOS] bug in fseek
- From: Andrew Lunn <andrew dot lunn at ascom dot ch>
- To: eCos Patches <ecos-patches at sources dot redhat dot com>
- Cc: Jonathan Larmour <jifl at jifvik dot org>
- Date: Mon, 2 Sep 2002 09:52:28 +0200
- Subject: Re: [ECOS] bug in fseek
- References: <20020901153004.10558.qmail@webmail6.rediffmail.com> <20020901160006.GL7565@biferten.ma.tech.ascom.ch>
> 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();