This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc 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] |
Ping! On Tue, Nov 25, 2014 at 09:24:04PM +0530, Siddhesh Poyarekar wrote: > Upon re-reading the standard, it seems like the intervening > fseek/fflush should not be required since ftruncate does not change > the file offset. So this is a bug and here's an updated patch: > > Currently we seek to end of file if there are unflushed writes or the > stream is in write mode, to get the current offset for writing in > append mode, which is the end of file. The latter case (i.e. stream > is in write mode, but no unflushed writes) is unnecessary since it > will only happen when the stream has just been flushed, in which case > the recorded offset ought to be reliable. > > Removing that case lets ftell give the correct offset when it follows > an ftruncate. The latter truncates the file, but does not change the > file position, due to which it is permissible to call ftell without an > intervening fseek call. > > Tested on x86_64 to verify that the added test case fails without the > patch and succeeds with it, and that there are no additional > regressions due to it. > > [BZ #17647] > * libio/fileops.c (do_ftell): Seek only when there are > unflushed writes. > * libio/wfileops.c (do_ftell_wide): Likewise. > * libio/tst-ftell-active-handler.c (do_ftruncate_test): New > test case. > (do_one_test): Call it.
Attachment:
pgpVuxFubFYeh.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |