https://gcc.gnu.org/bugzilla/show_bug.cgi?id=28103

--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I think we can just do this in __ostream_insert:

--- a/libstdc++-v3/include/bits/ostream_insert.h
+++ b/libstdc++-v3/include/bits/ostream_insert.h
@@ -103,6 +103,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
              else
                __ostream_write(__out, __s, __n);
              __out.width(0);
+
+             if (__builtin_expect(__out.bad(), 0))
+               __out.setstate(__ios_base::failbit);
            }
          __catch(__cxxabiv1::__forced_unwind&)
            {

If __ostream_write or __ostream_fill fails to insert something (as unformatted
output functions) they'll set badbit. So we can check for that and set failbit
explicitly, to meet the requirement for a formatted output function.

Reply via email to