From 3f7babea0ff1e2365dd2346f97c6f2c77257feff Mon Sep 17 00:00:00 2001 From: paolo Date: Wed, 22 Sep 2010 19:40:43 +0000 Subject: 2010-09-22 David Krauss PR libstdc++/45628 * include/bits/fstream.tcc (basic_filebuf::underflow): Add state transition to avoid modality requiring seekoff(0,ios::cur). (basic_filebuf::pbackfail): Likewise. (basic_filebuf::overflow): Likewise. (basic_filebuf::_M_seek): Avoid minor unnecessary conversion. (basic_filebuf::seekoff): Remove code to _M_get_ext_pos; make (0, ios::cur) a special case preserving buffer contents. (basic_filebuf::_M_get_ext_pos): New function to obtain status about codecvt extern_t buffer for overflow and seekoff. * include/std/fstream (basic_filebuf::_M_get_ext_pos): Likewise. * config/abi/pre/gnu.ver: Export new symbols. * testsuite/27_io/basic_filebuf/seekoff/char/45628-1.cc: New, verifies that seekoff(0, ios::cur) preserves buffers. * testsuite/27_io/basic_filebuf/seekoff/char/45628-2.cc: Likewise. for codecvt case. More lenient as it may still flush put area. * testsuite/27_io/basic_filebuf/seekoff/char/4.cc: Modify to check that seekoff is not required between read and write. * testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc: Likewise. * testsuite/27_io/basic_filebuf/sync/wchar_t/1.cc: Remove. * testsuite/27_io/basic_filebuf/sync/wchar_t/1.cc: Likewise. * testsuite/util/testsuite_character.h (codecvt::do_length): Comply with 22.2.1.5.2/10 "Returns ... the LARGEST value in the range..." git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164529 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/config/abi/pre/gnu.ver | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'libstdc++-v3/config') diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index 435f8579827..4981ca90740 100644 --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -332,7 +332,13 @@ GLIBCXX_3.4 { # std::basic_filebuf _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EEC*; _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EED*; - _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE[0-3]*; + _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE0*; + _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE13*; + _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE15*; + _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE16*; + _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE19*; + _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE2*; + _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE3*; _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE4openEPKc*; _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE4sync*; _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE[5-9]*; @@ -1178,6 +1184,9 @@ GLIBCXX_3.4.15 { _ZNSbIwSt11char_traitsIwESaIwEE4backEv; _ZNKSbIwSt11char_traitsIwESaIwEE4backEv; + # basic_filebuf::_M_get_ext_pos + _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE14_M_get_ext_pos*; + } GLIBCXX_3.4.14; # Symbols in the support library (libsupc++) have their own tag. -- cgit v1.2.1