From 517d2931c17d48c81c620bca857f06290b09f727 Mon Sep 17 00:00:00 2001 From: jlquinn <jlquinn@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Fri, 7 Mar 2003 14:14:11 +0000 Subject: 2003-03-07 Jerry Quinn <jlquinn@optonline.net> * include/bits/streambuf_iterator.h (_M_put): Set _M_failed if sputn fails. * testsuite/27_io/ostream_fail.cc: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63944 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/include/bits/streambuf_iterator.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'libstdc++-v3/include') diff --git a/libstdc++-v3/include/bits/streambuf_iterator.h b/libstdc++-v3/include/bits/streambuf_iterator.h index c2dee887c4b..95def0b7e4d 100644 --- a/libstdc++-v3/include/bits/streambuf_iterator.h +++ b/libstdc++-v3/include/bits/streambuf_iterator.h @@ -202,7 +202,9 @@ namespace std ostreambuf_iterator& _M_put(const _CharT* __ws, streamsize __len) { - this->_M_sbuf->sputn(__ws, __len); + if (__builtin_expect(!_M_failed, true) + && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len, false)) + _M_failed = true; return *this; } }; -- cgit v1.2.1