Skip to content
  • Rich Felker's avatar
    correctly handle write errors encountered by printf-family functions · d42269d7
    Rich Felker authored
    previously, write errors neither stopped further output attempts nor
    caused the function to return an error to the caller. this could
    result in silent loss of output, possibly in the middle of output in
    the event of a non-permanent error.
    
    the simplest solution is temporarily clearing the error flag for the
    target stream, then suppressing further output when the error flag is
    set and checking/restoring it at the end of the operation to determine
    the correct return value.
    
    since the wide version of the code internally calls the narrow fprintf
    to perform some of its underlying operations, initial clearing of the
    error flag is suppressed when performing a narrow vfprintf on a
    wide-oriented stream. this is not a problem since the behavior of
    narrow operations on wide-oriented streams is undefined.
    d42269d7