diff options
author | Paolo Carlini <pcarlini@suse.de> | 2004-04-21 09:23:36 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2004-04-21 09:23:36 +0000 |
commit | 0a7460199f1c204bf6b165fc8d29bfc5a5c8b0bf (patch) | |
tree | f2e6714460dacbfbeefa52190f6d8e476fbdb2ec | |
parent | 96d22b123242f42c216e90555d07656900e6ae6c (diff) | |
download | gcc-0a7460199f1c204bf6b165fc8d29bfc5a5c8b0bf.zip gcc-0a7460199f1c204bf6b165fc8d29bfc5a5c8b0bf.tar.gz gcc-0a7460199f1c204bf6b165fc8d29bfc5a5c8b0bf.tar.bz2 |
basic_string.tcc (_M_mutate): Don't compute __src unnecessarily.
2004-04-21 Paolo Carlini <pcarlini@suse.de>
Andrew Pinski <pinskia@physics.uc.edu>
* include/bits/basic_string.tcc (_M_mutate): Don't compute
__src unnecessarily.
Co-Authored-By: Andrew Pinski <pinskia@physics.uc.edu>
From-SVN: r80952
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/basic_string.tcc | 6 |
2 files changed, 9 insertions, 3 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 446ae40..5f760d2 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2004-04-21 Paolo Carlini <pcarlini@suse.de> + Andrew Pinski <pinskia@physics.uc.edu> + + * include/bits/basic_string.tcc (_M_mutate): Don't compute + __src unnecessarily. + 2004-04-19 Benjamin Kosnik <bkoz@redhat.com> * testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc: diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc index 4fa5e87..8f60abe 100644 --- a/libstdc++-v3/include/bits/basic_string.tcc +++ b/libstdc++-v3/include/bits/basic_string.tcc @@ -383,7 +383,6 @@ namespace std { const size_type __old_size = this->size(); const size_type __new_size = __old_size + __len2 - __len1; - const _CharT* __src = _M_data() + __pos + __len1; const size_type __how_much = __old_size - __pos - __len1; if (_M_rep() == &_S_empty_rep() @@ -397,7 +396,7 @@ namespace std traits_type::copy(__r->_M_refdata(), _M_data(), __pos); if (__how_much) traits_type::copy(__r->_M_refdata() + __pos + __len2, - __src, __how_much); + _M_data() + __pos + __len1, __how_much); _M_rep()->_M_dispose(__a); _M_data(__r->_M_refdata()); @@ -405,7 +404,8 @@ namespace std else if (__how_much && __len1 != __len2) { // Work in-place - traits_type::move(_M_data() + __pos + __len2, __src, __how_much); + traits_type::move(_M_data() + __pos + __len2, + _M_data() + __pos + __len1, __how_much); } _M_rep()->_M_set_sharable(); _M_rep()->_M_length = __new_size; |