ostream.tcc (ostream::put): Fixed error condition check.
authorStephen M. Webb <stephen@bregmasoft.com>
Wed, 18 Jul 2001 17:58:37 +0000 (17:58 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Wed, 18 Jul 2001 17:58:37 +0000 (17:58 +0000)
2001-07-18  Stephen M. Webb  <stephen@bregmasoft..com>
            Roman Sulzhyk  <roman_sulzhyk@yahoo.com>

        libstdc++/3599
        * include/bits/ostream.tcc (ostream::put): Fixed error condition check.
        * testsuite/27_io/streambuf.cc (test07): Added new regression test.

Co-Authored-By: Roman Sulzhyk <roman_sulzhyk@yahoo.com>
From-SVN: r44122

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/ostream.tcc
libstdc++-v3/testsuite/27_io/streambuf.cc

index ff2efd386c7bdc9dfd64811b491c07e8e6c7600a..dda8697c157d08cf57b7bbbc19014f42f6ad3ae9 100644 (file)
@@ -1,3 +1,10 @@
+2001-07-18  Stephen M. Webb  <stephen@bregmasoft..com>
+            Roman Sulzhyk  <roman_sulzhyk@yahoo.com>
+
+        libstdc++/3599
+        * include/bits/ostream.tcc (ostream::put): Fixed error condition check.
+        * testsuite/27_io/streambuf.cc (test07): Added new regression test.
+
 2001-07-17  Stephen M. Webb   <stephen@bregmasoft.com>r
 
        All occurrences of the __value_type() and __distance_type()
index c3cb5d2dced688e26d765369d157ba76be27b34b..c24f29530056d33be90e81170241504c21574c6f 100644 (file)
@@ -358,7 +358,7 @@ namespace std
       if (__cerb) 
        {
          int_type __put = rdbuf()->sputc(__c); 
-         if (__put != traits_type::to_int_type(__c))
+         if (traits_type::eq_int_type(__put, traits_type::eof()))
            this->setstate(ios_base::badbit);
        }
       return *this;
index 038c12c950241aac82b81f5d31626bff31d28996..68456432b73387674e2262c97052abfb820797d3 100644 (file)
@@ -337,6 +337,30 @@ namespace gnu
 class gnu::something_derived : std::streambuf { };
 #endif
 
+// libstdc++/3599
+class testbuf2 : public std::streambuf
+{
+public:
+  typedef std::streambuf::traits_type traits_type;
+
+  testbuf2() : std::streambuf() { }
+protected:
+  int_type 
+  overflow(int_type c = traits_type::eof()) 
+  { return traits_type::not_eof(0); }
+};
+
+void
+test07()
+{
+  testbuf2 ob;
+  std::ostream out(&ob); 
+
+  VERIFY(out << "gasp");
+  VERIFY(out << std::endl);
+}
+
 int main() 
 {
   test01();
@@ -345,5 +369,7 @@ int main()
 
   test04();
   test05();
+
+  test07();
   return 0;
 }