aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/ChangeLog17
-rw-r--r--libstdc++-v3/include/bits/istream.tcc80
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/26211.cc64
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-1.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-2.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc64
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/26211.cc48
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/8348.cc3
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc48
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc3
12 files changed, 51 insertions, 280 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 1e1c79f..522293e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,20 @@
+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
diff --git a/libstdc++-v3/include/bits/istream.tcc b/libstdc++-v3/include/bits/istream.tcc
index db3e96e..dca39ec 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 4c333d3..0000000
--- 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 <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;
-}
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 8e25157..04a604a 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 25f5289..f0ba6f7 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 3397238..0000000
--- 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 <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;
-}
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 86cf286..ae379e2 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 fc9bf9c..08ce848 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 f7b6b90..0000000
--- 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 <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;
-}
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 ba219fc..3c46cb0 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 c61e83e..0000000
--- 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 <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;
-}
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 36ed234..2566992 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() );
}