diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index fe539924d25..cd55a6b5e01 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2003-05-01 Paolo Carlini + + * include/std/std_sstream.h (str()): Revert the best of the + previous 'improvement', incorrect due to the COW nature of + v3 basic_string; simplify. + 2003-05-01 Paolo Carlini * include/bits/streambuf.tcc (__copy_streambufs): Adjust the diff --git a/libstdc++-v3/include/std/std_sstream.h b/libstdc++-v3/include/std/std_sstream.h index dcfdea64168..1d9a54970c5 100644 --- a/libstdc++-v3/include/std/std_sstream.h +++ b/libstdc++-v3/include/std/std_sstream.h @@ -136,14 +136,9 @@ namespace std __string_type __ret = _M_string; if (this->_M_mode & ios_base::out) { - // This is the deal: _M_string.size() is a value that - // represents the size of the initial string used to - // created the buffer, and may not be the correct size of - // the current stringbuf internal buffer. - const __size_type __len = _M_string.size(); const __size_type __nlen = this->_M_out_lim - - this->_M_out_beg; - if (__nlen > __len) + - this->_M_out_beg; + if (__nlen) __ret = __string_type(this->_M_out_beg, this->_M_out_beg + __nlen); }