From 946b29e62927eadfc4e87f27b8d30e5974b78c4c Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Mon, 6 Feb 2017 13:08:25 +0200 Subject: [PATCH] Bugfix erase() on derived __base_associative When calling erase() on a containers derived from __base_associative (e.g. multimap) and providing a pair of iterators a segfault will occur. Example code to reproduce: typedef std::multimap testmap; testmap t; t.insert(std::pair(1, 1)); t.insert(std::pair(2, 1)); t.insert(std::pair(3, 1)); t.erase(t.begin(), t.end()); Signed-off-by: Ben Kelly --- include/associative_base | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/associative_base b/include/associative_base index 27ae0ef..be8b27f 100644 --- a/include/associative_base +++ b/include/associative_base @@ -200,8 +200,7 @@ public: } void erase(iterator first, iterator last){ while(first != last){ - backing.erase(first.base_iterator()); - ++first; + first = backing.erase(first.base_iterator()); } } -- 2.7.4