aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/include/bits/stl_tree.h6
2 files changed, 9 insertions, 3 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 057d0eb..f37f19a 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2006-10-07 Ion Gaztanaga <igaztanaga@gmail.com>
+ Paolo Carlini <pcarlini@suse.de>
+
+ * include/bits/stl_tree.h (_Rb_tree<>::erase(const _Key&)): Don't
+ call std::distance unnecessarily.
+
2006-10-06 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/29368
diff --git a/libstdc++-v3/include/bits/stl_tree.h b/libstdc++-v3/include/bits/stl_tree.h
index e1efe0a..96b7a52 100644
--- a/libstdc++-v3/include/bits/stl_tree.h
+++ b/libstdc++-v3/include/bits/stl_tree.h
@@ -1269,10 +1269,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
erase(const _Key& __x)
{
- pair<iterator,iterator> __p = equal_range(__x);
- size_type __n = std::distance(__p.first, __p.second);
+ pair<iterator, iterator> __p = equal_range(__x);
+ const size_type __old_size = size();
erase(__p.first, __p.second);
- return __n;
+ return __old_size - size();
}
template<typename _Key, typename _Val, typename _KoV,