+2006-02-20 Paolo Carlini <pcarlini@suse.de>
+
+ 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 <pcarlini@suse.de>
* include/std/std_sstream.h (basic_stringbuf<>::setbuf): Simply
// _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;
}
{
// _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;
}
{
// _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;
}
+++ /dev/null
-// 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 <istream>
-#include <sstream>
-#include <testsuite_hooks.h>
-
-// 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;
-}
iss >> asNum;
VERIFY( test = iss.eof() );
VERIFY( test = !iss.fail() );
- iss.clear();
iss.seekg(pos1);
VERIFY( test = !iss.fail() );
}
iss >> asNum;
VERIFY( test = iss.eof() );
VERIFY( test = !iss.fail() );
- iss.clear();
iss.seekg(0, ios_base::beg);
VERIFY( test = !iss.fail() );
}
+++ /dev/null
-// 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 <istream>
-#include <sstream>
-#include <testsuite_hooks.h>
-
-// 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;
-}
VERIFY( test = iss.eof() );
VERIFY( test = !iss.fail() );
iss.seekg(pos1);
- iss.clear();
VERIFY( test = !iss.fail() );
}
}
iss >> asNum;
VERIFY( test = iss.eof() );
VERIFY( test = !iss.fail() );
- iss.clear();
iss.seekg(0, ios_base::beg);
VERIFY( test = !iss.fail() );
}
+++ /dev/null
-// 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 <istream>
-#include <sstream>
-#include <testsuite_hooks.h>
-
-// 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;
-}
iss >> asNum;
VERIFY( test = iss.eof() );
VERIFY( test = !iss.fail() );
- iss.clear();
iss.tellg();
VERIFY( test = !iss.fail() );
}
iss >> asNum;
VERIFY( test = iss.eof() );
VERIFY( test = !iss.fail() );
- iss.clear();
iss.seekg(0, ios_base::beg);
VERIFY( test = !iss.fail() );
}
iss >> asNum;
VERIFY( test = iss.eof() );
VERIFY( test = !iss.fail() );
- iss.clear();
iss.seekg(pos1);
VERIFY( test = !iss.fail() );
}
+++ /dev/null
-// 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 <istream>
-#include <sstream>
-#include <testsuite_hooks.h>
-
-// 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;
-}
iss >> asNum;
VERIFY( test = iss.eof() );
VERIFY( test = !iss.fail() );
- iss.clear();
iss.tellg();
VERIFY( test = !iss.fail() );
}
iss >> asNum;
VERIFY( test = iss.eof() );
VERIFY( test = !iss.fail() );
- iss.clear();
iss.seekg(0, ios_base::beg);
VERIFY( test = !iss.fail() );
}
iss >> asNum;
VERIFY( test = iss.eof() );
VERIFY( test = !iss.fail() );
- iss.clear();
iss.seekg(pos1);
VERIFY( test = !iss.fail() );
}