streambuf.tcc (__copy_streambufs): Don't set eofbit.
authorBenjamin Kosnik <bkoz@fillmore.constant.com>
Wed, 27 Jun 2001 01:07:29 +0000 (01:07 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Wed, 27 Jun 2001 01:07:29 +0000 (01:07 +0000)
2001-06-26  Benjamin Kosnik  <bkoz@fillmore.constant.com>
                     <vakatov@ncbi.nlm.nih.gov>

libstdc++/3272
* include/bits/streambuf.tcc (__copy_streambufs): Don't set eofbit.
* testsuite/27_io/ostream_inserter_other.cc (test04): Add test.
* testsuite/27_io/istream_extractor_other.cc: Fix.

From-SVN: r43602

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/streambuf.tcc
libstdc++-v3/testsuite/27_io/istream_extractor_other.cc
libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc

index 19bed9a51ab7357f79359ae6cc90553073390b2e..2bb5f013c266c80c58804de2479b8072e47e130e 100644 (file)
@@ -1,3 +1,11 @@
+2001-06-26  Benjamin Kosnik  <bkoz@fillmore.constant.com>
+                            <vakatov@ncbi.nlm.nih.gov>
+
+       libstdc++/3272
+       * include/bits/streambuf.tcc (__copy_streambufs): Don't set eofbit.
+       * testsuite/27_io/ostream_inserter_other.cc (test04): Add test.
+       * testsuite/27_io/istream_extractor_other.cc: Fix.
+       
 2001-06-26  Zoltan Hidvegi  <hzoli@austin.ibm.com>
 
        * acinclude.m4 (glibcpp_toolexeclibdir): Make multilib safe.
index fc26232a32cb5e61c69c05d86471fdbc791ac0e9..a21ad1cb9d74350553fc58898c7dee5d4e73fd45 100644 (file)
@@ -206,12 +206,8 @@ namespace std {
            __sbin->_M_in_cur_move(__xtrct);
            if (__xtrct == __bufsize)
              {
-               int_type __c = __sbin->sgetc();
-               if (__c == _Traits::eof())
-                 {
-                   __ios.setstate(ios_base::eofbit);
-                   break;
-                 }
+               if (__sbin->sgetc() == _Traits::eof())
+                 break;
                __bufsize = __sbin->in_avail();
              }
            else
index 01ae50d5d6c0d9237af0cea113d3ba9e7db9541a..c7053d1daad007238933eea6aaf29c15f36a87c1 100644 (file)
@@ -128,9 +128,9 @@ bool test01() {
   state1 = is_04.rdstate();
   is_04 >> &isbuf_03;   
   state2 = is_04.rdstate();
-  VERIFY( state1 != state2 );
+  VERIFY( state1 == state2 );
   VERIFY( !static_cast<bool>(state2 & statefail) );
-  VERIFY( state2 == stateeof );
+  VERIFY( state2 != stateeof );
   strtmp = isbuf_03.str();
   VERIFY( strtmp == str_02 ); // as only an "in" buffer
   VERIFY( isbuf_03.sgetc() == 'a' );
index 6b9c1c0aa4588d78e7f772d16ed6bd21809b3fd3..6dfcfc7cdc78b282a1d517c020cf990d88ff6949 100644 (file)
@@ -1,7 +1,7 @@
 // 1999-08-16 bkoz
 // 1999-11-01 bkoz
 
-// Copyright (C) 1999, 2000 Free Software Foundation
+// Copyright (C) 1999, 2000, 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
@@ -134,6 +134,21 @@ test03(void)
   return 0;
 }
 
+// libstdc++/3272
+void test04()
+{
+  using namespace std;
+  bool test = true;
+  istringstream istr("inside betty carter");
+  ostringstream ostr;
+  ostr << istr.rdbuf() << endl;
+
+  if (ostr.rdstate() & ios_base::eofbit) 
+    test = false;
+
+  VERIFY( test );
+}
+
 int 
 main()
 {