mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-30 07:14:09 +08:00
sstream.tcc (overflow): Instead of calling str()...
2003-05-01 Paolo Carlini <pcarlini@unitus.it> * include/bits/sstream.tcc (overflow): Instead of calling str(), then _M_string.reserve, thus copying the contents of the current buffer two times, just copy the latter in a temporary, then use the 'swap trick'. From-SVN: r66358
This commit is contained in:
parent
e70b1b7788
commit
74843551df
@ -1,3 +1,10 @@
|
||||
2003-05-01 Paolo Carlini <pcarlini@unitus.it>
|
||||
|
||||
* include/bits/sstream.tcc (overflow): Instead of calling
|
||||
str(), then _M_string.reserve, thus copying the contents
|
||||
of the current buffer two times, just copy the latter in
|
||||
a temporary, then use the 'swap trick'.
|
||||
|
||||
2003-05-01 Paolo Carlini <pcarlini@unitus.it>
|
||||
|
||||
* include/std/std_sstream.h (str()): Revert the best of the
|
||||
|
@ -100,11 +100,15 @@ namespace std
|
||||
// Order these tests done in is unspecified by the standard.
|
||||
if (!__testput)
|
||||
{
|
||||
// Force-allocate, re-sync.
|
||||
_M_string = this->str();
|
||||
// In virtue of DR 169 (TC) we are allowed to grow more than
|
||||
// one char. That's easy to implement thanks to the exponential
|
||||
// growth policy builtin into basic_string.
|
||||
__string_type __tmp;
|
||||
__tmp.reserve(__len);
|
||||
__tmp.assign(_M_string.data(),
|
||||
this->_M_out_end - this->_M_out_beg);
|
||||
_M_string.swap(__tmp);
|
||||
// Just to be sure...
|
||||
_M_string.reserve(__len);
|
||||
_M_really_sync(const_cast<char_type*>(_M_string.data()),
|
||||
this->_M_in_cur - this->_M_in_beg,
|
||||
|
Loading…
Reference in New Issue
Block a user