OSDN Git Service

2001-03-06 Benjamin Kosnik <bkoz@redhat.com>
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Mar 2001 02:08:59 +0000 (02:08 +0000)
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Mar 2001 02:08:59 +0000 (02:08 +0000)
libstdc++/2181
* include/bits/istream.tcc (basic_istream<_CharT, _Traits>::
operator>>(__istream_type& (*__pf)(__istream_type&)): Don't use
sentry.
(basic_istream<_CharT, _Traits>:: operator>>(__ios_type&
(*__pf)(__ios_type&)): Same.
(basic_istream<_CharT, _Traits>:: operator>>(ios_base&
(*__pf)(ios_base&))): Same.
* testsuite/27_io/istream_extractor_other.cc: Add tests.
* testsuite/27_io/istream_manip.cc (test01): Fix.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40281 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/istream.tcc
libstdc++-v3/testsuite/27_io/istream_extractor_other.cc
libstdc++-v3/testsuite/27_io/istream_manip.cc

index 116a974..2e6b71d 100644 (file)
@@ -1,3 +1,16 @@
+2001-03-06  Benjamin Kosnik  <bkoz@redhat.com>
+
+       libstdc++/2181
+       * include/bits/istream.tcc (basic_istream<_CharT, _Traits>::
+       operator>>(__istream_type& (*__pf)(__istream_type&)): Don't use
+       sentry.
+       (basic_istream<_CharT, _Traits>:: operator>>(__ios_type&
+       (*__pf)(__ios_type&)): Same.
+       (basic_istream<_CharT, _Traits>:: operator>>(ios_base&
+       (*__pf)(ios_base&))): Same.
+       * testsuite/27_io/istream_extractor_other.cc: Add tests.
+       * testsuite/27_io/istream_manip.cc (test01): Fix.
+       
 2001-03-06  Nathan Myers  <ncm@cantrip.org> 
            Benjamin Kosnik  <bkoz@redhat.com>
 
index 121dee2..faee226 100644 (file)
@@ -81,20 +81,7 @@ namespace std {
     basic_istream<_CharT, _Traits>::
     operator>>(__istream_type& (*__pf)(__istream_type&))
     {
-      sentry __cerb(*this, false);
-      if (__cerb) 
-       {
-         try {
-           __pf(*this);
-         }
-         catch(exception& __fail){
-           // 27.6.1.2.1 Common requirements.
-           // Turn this on without causing an ios::failure to be thrown.
-           this->setstate(ios_base::badbit);
-           if ((this->exceptions() & ios_base::badbit) != 0)
-             __throw_exception_again;
-         }
-       }
+      __pf(*this);
       return *this;
     }
 
@@ -103,20 +90,7 @@ namespace std {
     basic_istream<_CharT, _Traits>::
     operator>>(__ios_type& (*__pf)(__ios_type&))
     {
-      sentry __cerb(*this, false);
-      if (__cerb) 
-       {
-         try {
-           __pf(*this);
-         }
-         catch(exception& __fail){
-           // 27.6.1.2.1 Common requirements.
-           // Turn this on without causing an ios::failure to be thrown.
-           this->setstate(ios_base::badbit);
-           if ((this->exceptions() & ios_base::badbit) != 0)
-             __throw_exception_again;
-         }
-       }
+      __pf(*this);
       return *this;
     }
   
@@ -125,20 +99,7 @@ namespace std {
     basic_istream<_CharT, _Traits>::
     operator>>(ios_base& (*__pf)(ios_base&))
     {
-      sentry __cerb(*this, false);
-      if (__cerb) 
-       {
-         try {
-           __pf(*this);
-         }
-         catch(exception& __fail){
-           // 27.6.1.2.1 Common requirements.
-           // Turn this on without causing an ios::failure to be thrown.
-           this->setstate(ios_base::badbit);
-           if ((this->exceptions() & ios_base::badbit) != 0)
-             __throw_exception_again;
-         }
-       }
+      __pf(*this);
       return *this;
     }
   
index 2bd878f..4925c29 100644 (file)
@@ -1,6 +1,6 @@
 // 1999-07-28 bkoz
 
-// Copyright (C) 1999 Free Software Foundation
+// Copyright (C) 1999, 2001 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
@@ -55,14 +55,6 @@ bool test01() {
   statefail = std::ios_base::failbit;
   stateeof = std::ios_base::eofbit;
 
-  // template<_CharT, _Traits>
-  //  basic_istream& operator>>(basic_istream& (*pf) (basic_istream&))
-
-  // template<_CharT, _Traits>
-  //  basic_istream& operator>>(basic_ios& (*pf) (basic_ios&))
-
-  // template<_CharT, _Traits>
-  //  basic_istream& operator>>(ios_base& (*pf) (ios_base&))
 
   // template<_CharT, _Traits>
   //  basic_istream& operator>>(basic_streambuf*)
@@ -184,10 +176,34 @@ bool test02() {
   return test;
 }
 
+void test03() 
+{
+  using namespace std;  
+  bool test = true;
+
+  // template<_CharT, _Traits>
+  //  basic_istream& operator>>(ios_base& (*pf) (ios_base&))
+  {
+    int i = 0;
+    std::istringstream iss(" 43");
+    iss >> std::noskipws >> i;
+    std::ios::iostate i3 = iss.rdstate();
+    VERIFY ( !iss ); //should set failbit
+  }
+
+  // template<_CharT, _Traits>
+  //  basic_istream& operator>>(basic_ios& (*pf) (basic_ios&))
+
+  // template<_CharT, _Traits>
+  //  basic_istream& operator>>(basic_istream& (*pf) (basic_istream&))
+}
+
+
 int main()
 {
   test01();
   test02();
+  test03();
   return 0;
 }
 
index ba3826c..68f83ab 100644 (file)
@@ -70,7 +70,7 @@ bool test01(void)
   VERIFY( !iss02.eof() );
 
   iss01 >> std::ws;
-  VERIFY( iss01.fail() );
+  VERIFY( !iss01.fail() );
   VERIFY( iss01.eof() );
 
 #ifdef DEBUG_ASSERT