Fix fputc(3) potentially miswriting the next byte after flushing.

This commit is contained in:
Jonas 'Sortie' Termansen 2020-03-01 16:00:52 +01:00
parent 48d826bfc5
commit 976d686779
1 changed files with 2 additions and 7 deletions

View File

@ -45,15 +45,10 @@ int fputc_unlocked(int c, FILE* fp)
fp->flags |= _FILE_LAST_WRITE;
fp->flags &= ~_FILE_STATUS_EOF;
if ( fp->amount_output_buffered == BUFSIZ )
{
if ( fflush_unlocked(fp) == EOF )
return EOF;
}
fp->buffer[fp->amount_output_buffered++] = c;
if ( fp->buffer_mode == _IOLBF && c == '\n' )
if ( fp->amount_output_buffered == BUFSIZ ||
(fp->buffer_mode == _IOLBF && c == '\n') )
{
if ( fflush_unlocked(fp) == EOF )
return EOF;