aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2016-09-26 11:17:48 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2016-09-26 11:17:48 +0100
commit976160b962fce53f5ed3fe833af1c9d729327bfb (patch)
tree502c14614a65f7e17fcb560f95428e84fe0debde
parenta38814c0038fb4bf756547a3f50d125da0066737 (diff)
downloadgcc-976160b962fce53f5ed3fe833af1c9d729327bfb.zip
gcc-976160b962fce53f5ed3fe833af1c9d729327bfb.tar.gz
gcc-976160b962fce53f5ed3fe833af1c9d729327bfb.tar.bz2
Add assertions to extract(const_iterator) functions
* include/bits/stl_map.h (map::extract(const_iterator)): Assert that iterator is not past-the-end. * include/bits/stl_multimap.h (multimap::extract(const_iterator)): Likewise. * include/bits/stl_multiset.h (multiset::extract(const_iterator)): Likewise. * include/bits/stl_set.h (set::extract(const_iterator)): Likewise. * include/bits/unordered_map.h (unordered_map::extract(const_iterator)) (unordered_multimap::extract(const_iterator)): Likewise. * include/bits/unordered_set.h (unordered_set::extract(const_iterator)) (unordered_multiset::extract(const_iterator)): Likewise. From-SVN: r240487
-rw-r--r--libstdc++-v3/ChangeLog14
-rw-r--r--libstdc++-v3/include/bits/stl_map.h5
-rw-r--r--libstdc++-v3/include/bits/stl_multimap.h5
-rw-r--r--libstdc++-v3/include/bits/stl_multiset.h5
-rw-r--r--libstdc++-v3/include/bits/stl_set.h5
-rw-r--r--libstdc++-v3/include/bits/unordered_map.h10
-rw-r--r--libstdc++-v3/include/bits/unordered_set.h10
7 files changed, 46 insertions, 8 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index e3e26d1..04ec1f1 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,17 @@
+2016-09-26 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/bits/stl_map.h (map::extract(const_iterator)): Assert that
+ iterator is not past-the-end.
+ * include/bits/stl_multimap.h (multimap::extract(const_iterator)):
+ Likewise.
+ * include/bits/stl_multiset.h (multiset::extract(const_iterator)):
+ Likewise.
+ * include/bits/stl_set.h (set::extract(const_iterator)): Likewise.
+ * include/bits/unordered_map.h (unordered_map::extract(const_iterator))
+ (unordered_multimap::extract(const_iterator)): Likewise.
+ * include/bits/unordered_set.h (unordered_set::extract(const_iterator))
+ (unordered_multiset::extract(const_iterator)): Likewise.
+
2016-09-26 Ville Voutilainen <ville.voutilainen@gmail.com>
PR libstdc++/77717
diff --git a/libstdc++-v3/include/bits/stl_map.h b/libstdc++-v3/include/bits/stl_map.h
index f9482e2..9a0454a 100644
--- a/libstdc++-v3/include/bits/stl_map.h
+++ b/libstdc++-v3/include/bits/stl_map.h
@@ -605,7 +605,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
/// Extract a node.
node_type
extract(const_iterator __pos)
- { return _M_t.extract(__pos); }
+ {
+ __glibcxx_assert(__pos != end());
+ return _M_t.extract(__pos);
+ }
/// Extract a node.
node_type
diff --git a/libstdc++-v3/include/bits/stl_multimap.h b/libstdc++-v3/include/bits/stl_multimap.h
index 2b56824..c794b9b 100644
--- a/libstdc++-v3/include/bits/stl_multimap.h
+++ b/libstdc++-v3/include/bits/stl_multimap.h
@@ -606,7 +606,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
/// Extract a node.
node_type
extract(const_iterator __pos)
- { return _M_t.extract(__pos); }
+ {
+ __glibcxx_assert(__pos != end());
+ return _M_t.extract(__pos);
+ }
/// Extract a node.
node_type
diff --git a/libstdc++-v3/include/bits/stl_multiset.h b/libstdc++-v3/include/bits/stl_multiset.h
index d7312df..d3219eb 100644
--- a/libstdc++-v3/include/bits/stl_multiset.h
+++ b/libstdc++-v3/include/bits/stl_multiset.h
@@ -549,7 +549,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
/// Extract a node.
node_type
extract(const_iterator __pos)
- { return _M_t.extract(__pos); }
+ {
+ __glibcxx_assert(__pos != end());
+ return _M_t.extract(__pos);
+ }
/// Extract a node.
node_type
diff --git a/libstdc++-v3/include/bits/stl_set.h b/libstdc++-v3/include/bits/stl_set.h
index fd96dd4..140db39 100644
--- a/libstdc++-v3/include/bits/stl_set.h
+++ b/libstdc++-v3/include/bits/stl_set.h
@@ -565,7 +565,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
/// Extract a node.
node_type
extract(const_iterator __pos)
- { return _M_t.extract(__pos); }
+ {
+ __glibcxx_assert(__pos != end());
+ return _M_t.extract(__pos);
+ }
/// Extract a node.
node_type
diff --git a/libstdc++-v3/include/bits/unordered_map.h b/libstdc++-v3/include/bits/unordered_map.h
index ab8a762..6776090 100644
--- a/libstdc++-v3/include/bits/unordered_map.h
+++ b/libstdc++-v3/include/bits/unordered_map.h
@@ -421,7 +421,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
/// Extract a node.
node_type
extract(const_iterator __pos)
- { return _M_h.extract(__pos); }
+ {
+ __glibcxx_assert(__pos != end());
+ return _M_h.extract(__pos);
+ }
/// Extract a node.
node_type
@@ -1534,7 +1537,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
/// Extract a node.
node_type
extract(const_iterator __pos)
- { return _M_h.extract(__pos); }
+ {
+ __glibcxx_assert(__pos != end());
+ return _M_h.extract(__pos);
+ }
/// Extract a node.
node_type
diff --git a/libstdc++-v3/include/bits/unordered_set.h b/libstdc++-v3/include/bits/unordered_set.h
index e5bb2be..9905257 100644
--- a/libstdc++-v3/include/bits/unordered_set.h
+++ b/libstdc++-v3/include/bits/unordered_set.h
@@ -482,7 +482,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
/// Extract a node.
node_type
extract(const_iterator __pos)
- { return _M_h.extract(__pos); }
+ {
+ __glibcxx_assert(__pos != end());
+ return _M_h.extract(__pos);
+ }
/// Extract a node.
node_type
@@ -1190,7 +1193,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
/// Extract a node.
node_type
extract(const_iterator __pos)
- { return _M_h.extract(__pos); }
+ {
+ __glibcxx_assert(__pos != end());
+ return _M_h.extract(__pos);
+ }
/// Extract a node.
node_type