https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85343
Bug ID: 85343 Summary: Overload __throw_ios_failure to allow passing errno Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: redi at gcc dot gnu.org Target Milestone: --- The standard says "When throwing ios_base::failure exceptions, implementations should provide values of ec that identify the specific reason for the failure." We currently always use an error_code containing io_errc::stream. We can probably only expect errno to be set for filebuf operations, and in practice only for failed reads. Failed writes from basic_filebuf::overflow return -1 which might cause a stream object to set failbit and then throw, but at that point we're too far away from the write to know if errno can be relied on or not.