Bug 507054 - fsetpos/fseek broken for wide-oriented streams
Summary: fsetpos/fseek broken for wide-oriented streams
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: glibc
Version: 11
Hardware: All
OS: Linux
low
medium
Target Milestone: ---
Assignee: Andreas Schwab
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 516995
TreeView+ depends on / blocked
 
Reported: 2009-06-20 09:12 UTC by Watanabe, Yuki
Modified: 2009-09-07 13:36 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2009-09-07 13:36:49 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
a test case (374 bytes, text/plain)
2009-06-20 09:12 UTC, Watanabe, Yuki
no flags Details

Description Watanabe, Yuki 2009-06-20 09:12:14 UTC
Created attachment 348738 [details]
a test case

Description of problem:
The fsetpos and fseek functions does not work for wide-oriented streams.
They leave the file position at the wrong place or cause a segfault.

Version-Release number of selected component (if applicable):
glibc-2.10.1-2 (i686)

How reproducible:
Sometimes.

Steps to Reproduce:
Compile and run the attached test case.
  
Actual output of the test case:
1
2
1
1

Expected output of the test case:
1
2
1
3

Additional info:
The fflush function seems to affect the behaviour fsetpos. Doing fflush just before fsetpos sometimes makes fsetpos work correctly, but it does not always help.

Comment 1 Andreas Schwab 2009-08-12 14:15:52 UTC
The bug seems to be connected with this old change, but reverting it breaks other tests.

2002-11-04  Ulrich Drepper  <drepper>

	* libio/wfileops.c (_IO_wfile_seekoff): Don't modify _offset and
	_wide_data->_IO_read_end if adjustment can be made in the current
	buffer.

Comment 2 Andreas Schwab 2009-08-31 12:25:06 UTC
Looks like the equivalent of this change has never been applied to wfileops.c:

2004-12-06  Ulrich Drepper  <drepper>
    
	* libio/fileops.c (_IO_new_file_seekoff): Fix optimization of in-buffer
	seek.  Remove dead code.

Comment 3 Andreas Schwab 2009-09-07 13:36:49 UTC
Fixed in 2.10.90-20.


Note You need to log in before you can comment on or make changes to this bug.