From: Benjamin Kosnik Date: Wed, 27 Jun 2001 01:07:29 +0000 (+0000) Subject: streambuf.tcc (__copy_streambufs): Don't set eofbit. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f2f5472f0624a67c2b8bd7ddad9d05463ded4131;p=gcc.git streambuf.tcc (__copy_streambufs): Don't set eofbit. 2001-06-26 Benjamin Kosnik 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 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 19bed9a51ab..2bb5f013c26 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2001-06-26 Benjamin Kosnik + + + 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 * acinclude.m4 (glibcpp_toolexeclibdir): Make multilib safe. diff --git a/libstdc++-v3/include/bits/streambuf.tcc b/libstdc++-v3/include/bits/streambuf.tcc index fc26232a32c..a21ad1cb9d7 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 01ae50d5d6c..c7053d1daad 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(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 6b9c1c0aa45..6dfcfc7cdc7 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() {