]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crush/CrushWrapper: fix iterator invalidation in cleanup_dead_classes
authorSage Weil <sage@redhat.com>
Sat, 12 Aug 2017 18:45:42 +0000 (14:45 -0400)
committerSage Weil <sage@redhat.com>
Sat, 12 Aug 2017 19:25:28 +0000 (15:25 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/crush/CrushWrapper.cc

index ee8c0ac0bc8648c7335e34e125ad6faff338bdb4..e91f24b02675b761918e9b168782b4dd6bd03da8 100644 (file)
@@ -2019,9 +2019,15 @@ bool CrushWrapper::_class_is_dead(int class_id)
 
 void CrushWrapper::cleanup_dead_classes()
 {
-  for (auto &c: class_name) {
-    if (_class_is_dead(c.first))
-      remove_class_name(c.second);
+  auto p = class_name.begin();
+  while (p != class_name.end()) {
+    if (_class_is_dead(p->first)) {
+      string n = p->second;
+      ++p;
+      remove_class_name(n);
+    } else {
+      ++p;
+    }
   }
 }