diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 1e1c79fb275..522293e31b1 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,20 @@ +2006-02-20 Paolo Carlini + + Revert recent commit for libstdc++/26211, now suspended waiting for + DR 342 (reopened) to reach a new resolution. + * include/bits/istream.tcc (basic_istream<>::tellg, seekg(pos_type), + seekg(off_type, ios_base::seekdir)): Remove sentry. + * testsuite/27_io/basic_istream/seekg/char/26211.cc: Remove. + * testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc: Likewise. + * testsuite/27_io/basic_istream/tellg/char/26211.cc: Likewise. + * testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc: Likewise. + * testsuite/27_io/basic_istream/seekg/char/8348-1.cc: Revert changes. + * testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc: Likewise. + * testsuite/27_io/basic_istream/seekg/char/8348-2.cc: Likewise. + * testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc: Likewise. + * testsuite/27_io/basic_istream/tellg/char/8348.cc: Likewise. + * testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc: Likewise. + 2006-02-19 Paolo Carlini * include/std/std_sstream.h (basic_stringbuf<>::setbuf): Simply diff --git a/libstdc++-v3/include/bits/istream.tcc b/libstdc++-v3/include/bits/istream.tcc index db3e96e00e1..dca39ec1424 100644 --- a/libstdc++-v3/include/bits/istream.tcc +++ b/libstdc++-v3/include/bits/istream.tcc @@ -711,18 +711,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) // _GLIBCXX_RESOLVE_LIB_DEFECTS // DR60. Do not change _M_gcount. pos_type __ret = pos_type(-1); - sentry __cerb(*this, true); - if (__cerb) + try { - try - { - if (!this->fail()) - __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, - ios_base::in); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } + if (!this->fail()) + __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, + ios_base::in); } + catch(...) + { this->_M_setstate(ios_base::badbit); } return __ret; } @@ -733,28 +729,24 @@ _GLIBCXX_BEGIN_NAMESPACE(std) { // _GLIBCXX_RESOLVE_LIB_DEFECTS // DR60. Do not change _M_gcount. - sentry __cerb(*this, true); - if (__cerb) + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try + if (!this->fail()) { - if (!this->fail()) - { - // 136. seekp, seekg setting wrong streams? - const pos_type __p = this->rdbuf()->pubseekpos(__pos, - ios_base::in); - - // 129. Need error indication from seekp() and seekg() - if (__p == pos_type(off_type(-1))) - __err |= ios_base::failbit; - } + // 136. seekp, seekg setting wrong streams? + const pos_type __p = this->rdbuf()->pubseekpos(__pos, + ios_base::in); + + // 129. Need error indication from seekp() and seekg() + if (__p == pos_type(off_type(-1))) + __err |= ios_base::failbit; } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); return *this; } @@ -765,28 +757,24 @@ _GLIBCXX_BEGIN_NAMESPACE(std) { // _GLIBCXX_RESOLVE_LIB_DEFECTS // DR60. Do not change _M_gcount. - sentry __cerb(*this, true); - if (__cerb) + ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); + try { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try + if (!this->fail()) { - if (!this->fail()) - { - // 136. seekp, seekg setting wrong streams? - const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, - ios_base::in); - - // 129. Need error indication from seekp() and seekg() - if (__p == pos_type(off_type(-1))) - __err |= ios_base::failbit; - } + // 136. seekp, seekg setting wrong streams? + const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir, + ios_base::in); + + // 129. Need error indication from seekp() and seekg() + if (__p == pos_type(off_type(-1))) + __err |= ios_base::failbit; } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); } + catch(...) + { this->_M_setstate(ios_base::badbit); } + if (__err) + this->setstate(__err); return *this; } diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/26211.cc b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/26211.cc deleted file mode 100644 index 4c333d32288..00000000000 --- a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/26211.cc +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (C) 2006 Free Software Foundation -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -// USA. - -#include -#include -#include - -// libstdc++/26211 -void test01() -{ - using namespace std; - bool test __attribute__((unused)) = true; - - typedef istringstream::pos_type pos_type; - - istringstream iss("Duos for Doris"); - ostringstream oss; - - const pos_type p0 = iss.tellg(); - VERIFY( p0 == pos_type(0) ); - - iss >> oss.rdbuf(); - VERIFY( iss.rdstate() == iss.eofbit ); - - iss.seekg(0, ios_base::beg); - VERIFY( iss.fail() ); - - iss.clear(); - iss.seekg(0, ios_base::beg); - VERIFY( !iss.fail() ); - VERIFY( iss.tellg() == p0 ); - - iss >> oss.rdbuf(); - VERIFY( iss.rdstate() == iss.eofbit ); - - iss.seekg(p0); - VERIFY( iss.fail() ); - - iss.clear(); - iss.seekg(p0); - VERIFY( !iss.fail() ); - VERIFY( iss.tellg() == p0 ); -} - -int main() -{ - test01(); - return 0; -} diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-1.cc b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-1.cc index 8e251576771..04a604a4962 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-1.cc @@ -41,7 +41,6 @@ void test06(void) iss >> asNum; VERIFY( test = iss.eof() ); VERIFY( test = !iss.fail() ); - iss.clear(); iss.seekg(pos1); VERIFY( test = !iss.fail() ); } diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-2.cc b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-2.cc index 25f52891995..f0ba6f7effb 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-2.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-2.cc @@ -41,7 +41,6 @@ void test06(void) iss >> asNum; VERIFY( test = iss.eof() ); VERIFY( test = !iss.fail() ); - iss.clear(); iss.seekg(0, ios_base::beg); VERIFY( test = !iss.fail() ); } diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc deleted file mode 100644 index 3397238656e..00000000000 --- a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (C) 2006 Free Software Foundation -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -// USA. - -#include -#include -#include - -// libstdc++/26211 -void test01() -{ - using namespace std; - bool test __attribute__((unused)) = true; - - typedef wistringstream::pos_type pos_type; - - wistringstream iss(L"Duos for Doris"); - wostringstream oss; - - const pos_type p0 = iss.tellg(); - VERIFY( p0 == pos_type(0) ); - - iss >> oss.rdbuf(); - VERIFY( iss.rdstate() == iss.eofbit ); - - iss.seekg(0, ios_base::beg); - VERIFY( iss.fail() ); - - iss.clear(); - iss.seekg(0, ios_base::beg); - VERIFY( !iss.fail() ); - VERIFY( iss.tellg() == p0 ); - - iss >> oss.rdbuf(); - VERIFY( iss.rdstate() == iss.eofbit ); - - iss.seekg(p0); - VERIFY( iss.fail() ); - - iss.clear(); - iss.seekg(p0); - VERIFY( !iss.fail() ); - VERIFY( iss.tellg() == p0 ); -} - -int main() -{ - test01(); - return 0; -} diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc index 86cf286fcaa..ae379e29794 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc @@ -39,7 +39,6 @@ void test06(void) VERIFY( test = iss.eof() ); VERIFY( test = !iss.fail() ); iss.seekg(pos1); - iss.clear(); VERIFY( test = !iss.fail() ); } } diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc index fc9bf9c7d7a..08ce84853b6 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc @@ -38,7 +38,6 @@ void test06(void) iss >> asNum; VERIFY( test = iss.eof() ); VERIFY( test = !iss.fail() ); - iss.clear(); iss.seekg(0, ios_base::beg); VERIFY( test = !iss.fail() ); } diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/26211.cc b/libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/26211.cc deleted file mode 100644 index f7b6b90b7bd..00000000000 --- a/libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/26211.cc +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (C) 2006 Free Software Foundation -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -// USA. - -#include -#include -#include - -// libstdc++/26211 -void test01() -{ - using namespace std; - bool test __attribute__((unused)) = true; - - typedef istringstream::pos_type pos_type; - - istringstream iss("Duos for Doris"); - ostringstream oss; - - VERIFY( iss.tellg() == pos_type(0) ); - - iss >> oss.rdbuf(); - VERIFY( iss.rdstate() == iss.eofbit ); - VERIFY( iss.tellg() == pos_type(-1) ); - - iss.clear(); - VERIFY( iss.tellg() == pos_type(14) ); -} - -int main() -{ - test01(); - return 0; -} diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/8348.cc b/libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/8348.cc index ba219fcb5dd..3c46cb016b8 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/8348.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/8348.cc @@ -41,7 +41,6 @@ void test06(void) iss >> asNum; VERIFY( test = iss.eof() ); VERIFY( test = !iss.fail() ); - iss.clear(); iss.tellg(); VERIFY( test = !iss.fail() ); } @@ -54,7 +53,6 @@ void test06(void) iss >> asNum; VERIFY( test = iss.eof() ); VERIFY( test = !iss.fail() ); - iss.clear(); iss.seekg(0, ios_base::beg); VERIFY( test = !iss.fail() ); } @@ -67,7 +65,6 @@ void test06(void) iss >> asNum; VERIFY( test = iss.eof() ); VERIFY( test = !iss.fail() ); - iss.clear(); iss.seekg(pos1); VERIFY( test = !iss.fail() ); } diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc b/libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc deleted file mode 100644 index c61e83ed2d6..00000000000 --- a/libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (C) 2006 Free Software Foundation -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -// USA. - -#include -#include -#include - -// libstdc++/26211 -void test01() -{ - using namespace std; - bool test __attribute__((unused)) = true; - - typedef wistringstream::pos_type pos_type; - - wistringstream iss(L"Duos for Doris"); - wostringstream oss; - - VERIFY( iss.tellg() == pos_type(0) ); - - iss >> oss.rdbuf(); - VERIFY( iss.rdstate() == iss.eofbit ); - VERIFY( iss.tellg() == pos_type(-1) ); - - iss.clear(); - VERIFY( iss.tellg() == pos_type(14) ); -} - -int main() -{ - test01(); - return 0; -} diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc b/libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc index 36ed2346b78..2566992c288 100644 --- a/libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc @@ -38,7 +38,6 @@ void test06(void) iss >> asNum; VERIFY( test = iss.eof() ); VERIFY( test = !iss.fail() ); - iss.clear(); iss.tellg(); VERIFY( test = !iss.fail() ); } @@ -51,7 +50,6 @@ void test06(void) iss >> asNum; VERIFY( test = iss.eof() ); VERIFY( test = !iss.fail() ); - iss.clear(); iss.seekg(0, ios_base::beg); VERIFY( test = !iss.fail() ); } @@ -64,7 +62,6 @@ void test06(void) iss >> asNum; VERIFY( test = iss.eof() ); VERIFY( test = !iss.fail() ); - iss.clear(); iss.seekg(pos1); VERIFY( test = !iss.fail() ); }