OSDN Git Service

2002-04-22 Benjamin Kosnik <bkoz@redhat.com>
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Apr 2002 19:10:02 +0000 (19:10 +0000)
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Apr 2002 19:10:02 +0000 (19:10 +0000)
* include/bits/istream.tcc (istream::read): Fix.
* testsuite/27_io/istream_unformatted.cc (main): Add.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@52628 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/istream.tcc
libstdc++-v3/testsuite/27_io/istream_unformatted.cc

index 6550006..3ac23e5 100644 (file)
@@ -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
index a55e906..636a738 100644 (file)
@@ -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)
index bf25be8..da2cdeb 100644 (file)
@@ -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;
 }