From 1a23762b2f9a70af16937864264ada797f04e811 Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Wed, 7 Aug 2002 05:13:08 +0000 Subject: [PATCH] Revert PR libstdc++/6594 2002-08-06 Benjamin Kosnik 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 | 10 ++++++ libstdc++-v3/src/strstream.cc | 35 ++++++++----------- .../testsuite/19_diagnostics/stdexceptions.cc | 2 +- .../testsuite/backward/strstream_members.cc | 15 ++++++-- 4 files changed, 37 insertions(+), 25 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 6a03683257ff..dd8363e547ce 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,13 @@ +2002-08-06 Benjamin Kosnik + + 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 Jakub Jelinek diff --git a/libstdc++-v3/src/strstream.cc b/libstdc++-v3/src/strstream.cc index 961ff0394478..0576472ddbe3 100644 --- a/libstdc++-v3/src/strstream.cc +++ b/libstdc++-v3/src/strstream.cc @@ -47,7 +47,7 @@ // MAY BE REMOVED in a future standard revision. You should use the // header instead. -#include +#include #include #include #include @@ -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); diff --git a/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc b/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc index 1b11118da5d9..267795acb752 100644 --- a/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc +++ b/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc @@ -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"; diff --git a/libstdc++-v3/testsuite/backward/strstream_members.cc b/libstdc++-v3/testsuite/backward/strstream_members.cc index 494008e4c2b7..107041041f7b 100644 --- a/libstdc++-v3/testsuite/backward/strstream_members.cc +++ b/libstdc++-v3/testsuite/backward/strstream_members.cc @@ -18,23 +18,32 @@ // backward strstream members -#include +#include #include // { 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; } -- 2.47.2