istream.tcc: Removed test for _M_gcount < in_avail()...
authorBrent Verner <brent@rcfile.org>
Fri, 6 Oct 2000 07:12:32 +0000 (07:12 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Fri, 6 Oct 2000 07:12:32 +0000 (07:12 +0000)
2000-10-05  Brent Verner  <brent@rcfile.org>

        * bits/istream.tcc [basic_istream::get(basic_streambuf&)]: Removed
test for _M_gcount < in_avail(), as in_avail() only reports info
for current buffer, causing method to return at end of buffer.
* testsuite/27_io/istream_unformatted.cc [test07()]: New test.
* testsuite/27_io/istream_unformatted-3.txt: New file.
* testsuite/27_io/istream_unformatted-3.tst: New file.

From-SVN: r36752

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

index 8ad2de0..1c42630 100644 (file)
@@ -588,11 +588,10 @@ namespace std {
            bool __testdelim = __c == __idelim;
            bool __testeof =  __c == __eof;
            bool __testput = true;
-           streamsize __n = __this_sb->in_avail();
 
-           while (_M_gcount <= __n && !__testeof && !__testdelim 
+           while (!__testeof && !__testdelim 
                   && (__testput = __sb.sputc(traits_type::to_char_type(__c)) 
-                                  != __eof))
+                      != __eof))
              {
                ++_M_gcount;
                __c = __this_sb->sbumpc();
index 6757a39..d34e578 100644 (file)
@@ -452,7 +452,28 @@ test06()
   return 0;
 }
 
-
+// bug reported by bgarcia@laurelnetworks.com
+// http://sources.redhat.com/ml/libstdc++-prs/2000-q3/msg00041.html
+int
+test07()
+{
+  const char* tfn = "testsuite/istream_unformatted-3.txt";
+  std::ifstream infile;
+  infile.open(tfn);
+  VERIFY( infile );
+  while (infile)
+    {
+      std::string line;
+      std::ostringstream line_ss;
+      while (infile.peek() == '\n')
+       infile.get();
+      infile.get(*(line_ss.rdbuf()));
+      line = line_ss.str();
+      VERIFY( line == "1234567890" || line == "" );
+    }
+  return 0;
+}
 int 
 main()
 {
@@ -462,7 +483,8 @@ main()
   test04();
   test05();
   test06();
-  
+  test07();
+
   return 0;
 }