aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@suse.de>2004-04-21 09:23:36 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2004-04-21 09:23:36 +0000
commit0a7460199f1c204bf6b165fc8d29bfc5a5c8b0bf (patch)
treef2e6714460dacbfbeefa52190f6d8e476fbdb2ec
parent96d22b123242f42c216e90555d07656900e6ae6c (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--libstdc++-v3/include/bits/basic_string.tcc6
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;