aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/include/bits/basic_string.tcc8
2 files changed, 11 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 91b866e..b3a706f 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,10 @@
+2004-01-27 Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/basic_string.tcc
+ (basic_string(const basic_string&, size_type, size_type),
+ basic_string(const basic_string&, size_type, size_type,
+ const _Alloc&)): Avoid unnecessarily constructing iterators.
+
2004-01-26 Paolo Carlini <pcarlini@suse.de>
* config/locale/generic/c_locale.cc: Fix throw messages
diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc
index 1e9d33e..733a11d 100644
--- a/libstdc++-v3/include/bits/basic_string.tcc
+++ b/libstdc++-v3/include/bits/basic_string.tcc
@@ -207,10 +207,10 @@ namespace std
template<typename _CharT, typename _Traits, typename _Alloc>
basic_string<_CharT, _Traits, _Alloc>::
basic_string(const basic_string& __str, size_type __pos, size_type __n)
- : _M_dataplus(_S_construct(__str._M_ibegin()
+ : _M_dataplus(_S_construct(__str._M_data()
+ __str._M_check(__pos,
"basic_string::basic_string"),
- __str._M_ibegin() + __pos
+ __str._M_data() + __pos
+ __str._M_limit(__pos, __n),
_Alloc()), _Alloc())
{ }
@@ -219,10 +219,10 @@ namespace std
basic_string<_CharT, _Traits, _Alloc>::
basic_string(const basic_string& __str, size_type __pos,
size_type __n, const _Alloc& __a)
- : _M_dataplus(_S_construct(__str._M_ibegin()
+ : _M_dataplus(_S_construct(__str._M_data()
+ __str._M_check(__pos,
"basic_string::basic_string"),
- __str._M_ibegin() + __pos
+ __str._M_data() + __pos
+ __str._M_limit(__pos, __n), __a), __a)
{ }