diff options
author | Benjamin Kosnik <bkoz@fillmore.constant.com> | 2001-06-27 01:07:29 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2001-06-27 01:07:29 +0000 |
commit | f2f5472f0624a67c2b8bd7ddad9d05463ded4131 (patch) | |
tree | 557dc8c713b8270838fc406f759ba757485c4185 /libstdc++-v3 | |
parent | e979f9e88c46abb7c45dd2dacf79085a26d48301 (diff) | |
download | gcc-f2f5472f0624a67c2b8bd7ddad9d05463ded4131.zip gcc-f2f5472f0624a67c2b8bd7ddad9d05463ded4131.tar.gz gcc-f2f5472f0624a67c2b8bd7ddad9d05463ded4131.tar.bz2 |
streambuf.tcc (__copy_streambufs): Don't set eofbit.
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
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/streambuf.tcc | 8 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/27_io/istream_extractor_other.cc | 4 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc | 17 |
4 files changed, 28 insertions, 9 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 19bed9a..2bb5f01 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -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. diff --git a/libstdc++-v3/include/bits/streambuf.tcc b/libstdc++-v3/include/bits/streambuf.tcc index fc26232..a21ad1cb 100644 --- a/libstdc++-v3/include/bits/streambuf.tcc +++ b/libstdc++-v3/include/bits/streambuf.tcc @@ -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 diff --git a/libstdc++-v3/testsuite/27_io/istream_extractor_other.cc b/libstdc++-v3/testsuite/27_io/istream_extractor_other.cc index 01ae50d..c7053d1 100644 --- a/libstdc++-v3/testsuite/27_io/istream_extractor_other.cc +++ b/libstdc++-v3/testsuite/27_io/istream_extractor_other.cc @@ -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' ); diff --git a/libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc b/libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc index 6b9c1c0..6dfcfc7 100644 --- a/libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc +++ b/libstdc++-v3/testsuite/27_io/ostream_inserter_other.cc @@ -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() { |