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