[flang] Fix output buffering bug (positionability assumption)
The I/O runtime library code was failing to retain data in a buffer from the current output record when flushing the buffer; this is fatally wrong when the corresponding file cannot be repositioned, as in the case of standard output to the console. So refine the Flush() member function to retain a specified number of bytes, rearrange the data as necessary (using existing code for read frame management after moving it into a new member function), and add a big comment to the head of the file to clarify the roles of the various data members in the management of contiguous frames in circular buffers. Update: added a unit test. Differential Revision: https://reviews.llvm.org/D99198
Loading
Please register or sign in to comment