From 061c21786adc92a304467d1160f26ca09718b03f Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sat, 12 Aug 2017 14:45:42 -0400 Subject: [PATCH] crush/CrushWrapper: fix iterator invalidation in cleanup_dead_classes Signed-off-by: Sage Weil --- src/crush/CrushWrapper.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/crush/CrushWrapper.cc b/src/crush/CrushWrapper.cc index ee8c0ac0bc864..e91f24b02675b 100644 --- a/src/crush/CrushWrapper.cc +++ b/src/crush/CrushWrapper.cc @@ -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; + } } } -- 2.39.5