]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Revert PR libstdc++/6594
authorBenjamin Kosnik <bkoz@redhat.com>
Wed, 7 Aug 2002 05:13:08 +0000 (05:13 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Wed, 7 Aug 2002 05:13:08 +0000 (05:13 +0000)
2002-08-06  Benjamin Kosnik  <bkoz@redhat.com>

        Revert PR libstdc++/6594
        * src/strstream.cc (strstreambuf): Revert.
        (strstreambuf::overflow): Same.
        (strstreambuf::~strstreambuf): Same.
        * testsuite/backward/strstream_members.cc (test02): Add.

        * testsuite/19_diagnostics/stdexceptions.cc (test04): Add bool test.

From-SVN: r56091

libstdc++-v3/ChangeLog
libstdc++-v3/src/strstream.cc
libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc
libstdc++-v3/testsuite/backward/strstream_members.cc

index 6a03683257ffa11228e9432cf5eda2164b1c2e3a..dd8363e547ce3ba211668b51027e8633cdfbe734 100644 (file)
@@ -1,3 +1,13 @@
+2002-08-06  Benjamin Kosnik  <bkoz@redhat.com>
+
+       Revert PR libstdc++/6594
+       * src/strstream.cc (strstreambuf): Revert.
+       (strstreambuf::overflow): Same.
+       (strstreambuf::~strstreambuf): Same.    
+       * testsuite/backward/strstream_members.cc (test02): Add.
+
+       * testsuite/19_diagnostics/stdexceptions.cc (test04): Add bool test.
+
 2002-08-01  Benjamin Kosnik  <bkoz@redhat.com>
            Jakub Jelinek  <jakub@redhat.com>
        
index 961ff03944787e1d879e9cb6f3e6a4f70e194f28..0576472ddbe3d55a1f6e3d62f209f54927e5a241 100644 (file)
@@ -47,7 +47,7 @@
 // MAY BE REMOVED in a future standard revision.  You should use the
 // header <sstream> instead.
 
-#include <strstream.h>
+#include <strstream>
 #include <algorithm>
 #include <new>
 #include <stdlib.h>
@@ -60,12 +60,13 @@ namespace std
   : _Base(), _M_alloc_fun(0), _M_free_fun(0), _M_dynamic(true), 
     _M_frozen(false), _M_constant(false)
   {
-    _M_buf_size = _M_buf_size_opt = max(initial_capacity, streamsize(16));
-    _M_buf = _M_alloc(_M_buf_size);
-    if (_M_buf) 
+    streamsize n = max(initial_capacity, streamsize(16));
+    
+    char* buf = _M_alloc(n);
+    if (buf) 
       {
-       setp(_M_buf, _M_buf + _M_buf_size);
-       setg(_M_buf, _M_buf, _M_buf);
+       setp(buf, buf + n);
+       setg(buf, buf, buf);
       }
   }
 
@@ -73,12 +74,13 @@ namespace std
   : _Base(), _M_alloc_fun(alloc_f), _M_free_fun(free_f), _M_dynamic(true), 
     _M_frozen(false), _M_constant(false)
   {
-    _M_buf_size = _M_buf_size_opt = 16;
-    _M_buf = _M_alloc(_M_buf_size);
-    if (_M_buf) 
+    streamsize n = 16;
+
+    char* buf = _M_alloc(n);
+    if (buf) 
       {
-       setp(_M_buf, _M_buf + _M_buf_size);
-       setg(_M_buf, _M_buf, _M_buf);
+       setp(buf, buf + n);
+       setg(buf, buf, buf);
       }
   }
 
@@ -116,14 +118,7 @@ namespace std
   strstreambuf::~strstreambuf()
   {
     if (_M_dynamic && !_M_frozen)
-      {
-       char* p = this->eback();
-       _M_free(p);
-       if (p == _M_buf)
-         _M_buf = 0;
-      }
-    if (_M_buf)
-      _M_free(_M_buf);
+      _M_free(eback());
   }
 
   void 
@@ -169,8 +164,6 @@ namespace std
                old_get_offset = gptr() - eback();
              }
            
-           _M_buf = buf;
-           _M_buf_size = _M_buf_size_opt = new_size;
            setp(buf, buf + new_size);
            pbump(old_size);
 
index 1b11118da5d92beff543a64e54d3cddccee3553c..267795acb752948b58ef543d916102891861d993 100644 (file)
@@ -58,7 +58,6 @@ public:
 void test03()
 {
   bool test = true;
-
   try
     { throw fuzzy_logic(); }
   catch(const fuzzy_logic& obj)
@@ -79,6 +78,7 @@ void allocate_on_stack(void)
 }
 void test04()
 {
+  bool test = true;
   const std::string s("CA ISO emergency once again:immediate power down");
   const char* strlit1 = "wish I lived in Palo Alto";
   const char* strlit2 = "...or Santa Barbara";
index 494008e4c2b7ff7a71a3ad7d31870edf341f50cd..107041041f7be6f9ab7642397ba7d90506b54535 100644 (file)
 
 // backward strstream members
 
-#include <strstream.h>
+#include <strstream>
 #include <testsuite_hooks.h>
 
 // { dg-options "-Wno-deprecated" }
 
 int test01()
 {
-   strstream s;
+   std::strstream s;
    for (unsigned i=0 ; i!= 1000 ; ++i)
       s << i << std::endl;
    s << std::ends;
-
    return 0;
 }
 
+
+int test02()
+{
+  std::ostrstream buf;
+  buf << std::ends;
+  char *s = buf.str ();
+  delete [] s;
+}
+
 int main()
 {
   test01();
+  test02();
   return 0;
 }