Doc No: J16/97-0094 WG14/N1132 Date: 1997-11-11 Nathan Myers/Thomas Plum Refer to Dawes, N1111=97-0073, Libraries Issues for Morristown Item 38, basic_filebuf::seekpos must call unshift Proposed resolution: "To 27.8.1.4 add wording to the effect that: basic_filebuf::seekpos must call unshift for the codecvt facet before it alters the file position indicator" Specific wording: 27.8.1.4, rewrite of para 11: Let width denote a_codecvt.encoding(). If is_open() == false, or off != 0 and width <= 0, then the positioning operation fails. If way != basic_ios::cur or off != 0 , and if the last operation was output, then update the output sequence and write any unshift sequence. Next, seek to the new position: If width > 0, call std::fseek(file, width * off, whence); otherwise, call std::fseek(file,0,whence)). Para 12, Notes: "The last operation was output" means either the last virtual operation was overflow or the put buffer is non-empty. "Write any unshift sequence" means, if width is less than zero, then call a_codecvt.unshift(st, xbuf, xbuf+XSIZE, xbuf_end) and output the resulting unshift sequence. 27.8.1.4, rewrite of the 1 line preceding para 14: If (which&ios_base::out) != 0, then update the output sequence, write any unshift sequence, then set the file position to sp.