aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Kosnik <bkoz@redhat.com>2002-04-22 19:10:02 +0000
committerBenjamin Kosnik <bkoz@gcc.gnu.org>2002-04-22 19:10:02 +0000
commitb2e4f4fda73c761ee3d7f817378241d04f11a936 (patch)
treef1e58c1179271b15681f7ffbf8dfb9c5bd4352f8
parent232b0b45ca239da217d1e5d22fcc4f9e7a74f6fb (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--libstdc++-v3/include/bits/istream.tcc13
-rw-r--r--libstdc++-v3/testsuite/27_io/istream_unformatted.cc15
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;
}