diff options
author | jlquinn <jlquinn@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-03-07 14:14:11 +0000 |
---|---|---|
committer | jlquinn <jlquinn@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-03-07 14:14:11 +0000 |
commit | 517d2931c17d48c81c620bca857f06290b09f727 (patch) | |
tree | 25cff5182a787e32d4f8cdd84649260989f1232b /libstdc++-v3/include | |
parent | 604f3a0a141f70ae2779c731573ddf13325c5e12 (diff) | |
download | ppe42-gcc-517d2931c17d48c81c620bca857f06290b09f727.tar.gz ppe42-gcc-517d2931c17d48c81c620bca857f06290b09f727.zip |
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
Diffstat (limited to 'libstdc++-v3/include')
-rw-r--r-- | libstdc++-v3/include/bits/streambuf_iterator.h | 4 |
1 files changed, 3 insertions, 1 deletions
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; } }; |