diff options
author | Benjamin Kosnik <bkoz@redhat.com> | 2002-04-22 19:10:02 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2002-04-22 19:10:02 +0000 |
commit | b2e4f4fda73c761ee3d7f817378241d04f11a936 (patch) | |
tree | f1e58c1179271b15681f7ffbf8dfb9c5bd4352f8 | |
parent | 232b0b45ca239da217d1e5d22fcc4f9e7a74f6fb (diff) | |
download | gcc-b2e4f4fda73c761ee3d7f817378241d04f11a936.zip gcc-b2e4f4fda73c761ee3d7f817378241d04f11a936.tar.gz gcc-b2e4f4fda73c761ee3d7f817378241d04f11a936.tar.bz2 |
istream.tcc (istream::read): Fix.
2002-04-22 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/istream.tcc (istream::read): Fix.
* testsuite/27_io/istream_unformatted.cc (main): Add.
From-SVN: r52628
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/istream.tcc | 13 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/27_io/istream_unformatted.cc | 15 |
3 files changed, 22 insertions, 11 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 6550006..3ac23e5 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2002-04-22 Benjamin Kosnik <bkoz@redhat.com> + + * include/bits/istream.tcc (istream::read): Fix. + * testsuite/27_io/istream_unformatted.cc (main): Add. + 2002-04-20 Benjamin Kosnik <bkoz@redhat.com> PR libstdc++/6360 diff --git a/libstdc++-v3/include/bits/istream.tcc b/libstdc++-v3/include/bits/istream.tcc index a55e906..636a738 100644 --- a/libstdc++-v3/include/bits/istream.tcc +++ b/libstdc++-v3/include/bits/istream.tcc @@ -777,17 +777,8 @@ namespace std { try { - const int_type __eof = traits_type::eof(); - __streambuf_type* __sb = this->rdbuf(); - int_type __c = __sb->sgetc(); - - while (_M_gcount < __n && __c != __eof) - { - *__s++ = traits_type::to_char_type(__c); - ++_M_gcount; - __c = __sb->snextc(); - } - if (__c == __eof) + _M_gcount = this->rdbuf()->sgetn(__s, __n); + if (_M_gcount != __n) this->setstate(ios_base::eofbit | ios_base::failbit); } catch(exception& __fail) diff --git a/libstdc++-v3/testsuite/27_io/istream_unformatted.cc b/libstdc++-v3/testsuite/27_io/istream_unformatted.cc index bf25be8..da2cdeb 100644 --- a/libstdc++-v3/testsuite/27_io/istream_unformatted.cc +++ b/libstdc++-v3/testsuite/27_io/istream_unformatted.cc @@ -499,6 +499,20 @@ test08() VERIFY( c == 'i' ); } +// Theodore Papadopoulo +void +test09() +{ + using namespace std; + bool test = true; + + istringstream iss("Juana Briones"); + char tab[13]; + iss.read(tab, 13); + if (!iss) + test = false; + VERIFY( test ); +} int main() @@ -511,6 +525,7 @@ main() test06(); test07(); test08(); + test09(); return 0; } |