]> git.ipfire.org Git - thirdparty/gcc.git/commit
re PR libstdc++/9371 (Bad exception handling in i/ostream::operator>>/<<(streambuf*))
authorBenjamin Kosnik <bkoz@redhat.com>
Thu, 27 Nov 2003 08:14:25 +0000 (08:14 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Thu, 27 Nov 2003 08:14:25 +0000 (08:14 +0000)
commit12841eb3d032e926775f49834b8941f57a047baf
tree27f6d0d3d427d9db5da892e2b7f7f741d945f41a
parentb483cfb7a714d1d4ca0868241f69b31d44c51e55
re PR libstdc++/9371 (Bad exception handling in i/ostream::operator>>/<<(streambuf*))

2003-11-26  Benjamin Kosnik  <bkoz@redhat.com>

PR libstdc++/9371
PR libstdc++/9546
PR libstdc++/10093
PR libstdc++/10095
* include/bits/basic_ios.h (basic_ios::setstate): Elide if goodbit.
(basic_ios::_M_setstate): Consolidate common error handling code.
* include/bits/basic_ios.tcc: Tweak.
* include/bits/fstream.tcc: Tweak.
* include/bits/istream.tcc: Use _M_setstate for common exception
handling. Move setstate calls after catch.
(basic_istream::tellg): Check for exceptions thrown by streambuf
virtual functions.
(basic_istream::seekg): Same.
* include/bits/ostream.tcc: Same, but for ostream.
(basic_ostream::flush): Check for exceptions thrown by streambuf
virtual functions.
(basic_istream::tellp): Same.
(basic_istream::seekp): Same.
* include/bits/locale_facets.tcc: Tweak.
* include/bits/streambuf.tcc: Tweak.
(__copy_streambufs): Propagate exceptions.
* testsuite/testsuite_io.h (fail_streambuf): New.
(fail_num_get): New.
(fail_num_put): New.
(facet_error): New.
(underflow_error): New.
(overflow_error): New.
(positioning_error): New.
* testsuite/27_io/basic_istream/exceptions/char/9561.cc: Tweak.
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
        exceptions_badbit_throw.cc, exceptions_failbit.cc,
        exceptions_failbit_throw.cc: New.
* testsuite/27_io/basic_istream/extractors_other/char/
error_failbit.cc, exceptions_badbit_throw.cc,
        exceptions_failbit_throw.cc, exceptions_null.cc: New.
* testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc:
New.
* testsuite/27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc:
New.
* testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc:
New.
* testsuite/27_io/basic_ostream/inserters_arithmetic/char/
exceptions_badbit_throw.cc, exceptions_failbit_throw.cc: New.
* testsuite/27_io/basic_ostream/inserters_other/char/
error_failbit.cc, exceptions_badbit_throw.cc,
        exceptions_failbit_throw.cc, exceptions_null.cc: New.
* testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc:
New.
* testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc:
New.

From-SVN: r73979
28 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/basic_ios.h
libstdc++-v3/include/bits/basic_ios.tcc
libstdc++-v3/include/bits/fstream.tcc
libstdc++-v3/include/bits/istream.tcc
libstdc++-v3/include/bits/locale_facets.tcc
libstdc++-v3/include/bits/ostream.tcc
libstdc++-v3/include/bits/streambuf.tcc
libstdc++-v3/testsuite/27_io/basic_istream/exceptions/char/9561.cc
libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_badbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/error_failbit.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_badbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_failbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_badbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_failbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_failbit.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_badbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_failbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc [new file with mode: 0644]
libstdc++-v3/testsuite/testsuite_io.h