From: Sage Weil Date: Sat, 12 Aug 2017 18:45:42 +0000 (-0400) Subject: crush/CrushWrapper: fix iterator invalidation in cleanup_dead_classes X-Git-Tag: v12.1.4~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e9a5057551ca5f2a031c5a10648154f4aa878110;p=ceph.git crush/CrushWrapper: fix iterator invalidation in cleanup_dead_classes Signed-off-by: Sage Weil (cherry picked from commit 061c21786adc92a304467d1160f26ca09718b03f) --- diff --git a/src/crush/CrushWrapper.cc b/src/crush/CrushWrapper.cc index ee8c0ac0bc86..e91f24b02675 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; + } } }