From: Alex Rousskov Date: Thu, 16 Apr 2015 04:10:51 +0000 (-0600) Subject: Do not increment an iterator invalidated by std::map::erase(). X-Git-Tag: merge-candidate-3-v1~174 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b02a2ff8b6f2ced0f6d6d8491c5d5b75d46c63a1;p=thirdparty%2Fsquid.git Do not increment an iterator invalidated by std::map::erase(). --- diff --git a/src/ssl/context_storage.cc b/src/ssl/context_storage.cc index 41e5de6db6..293e91d48f 100644 --- a/src/ssl/context_storage.cc +++ b/src/ssl/context_storage.cc @@ -95,13 +95,14 @@ void Ssl::GlobalContextStorage::reconfigureFinish() reconfiguring = false; // remove or change old local storages. - for (std::map::iterator i = storage.begin(); i != storage.end(); ++i) { + for (std::map::iterator i = storage.begin(); i != storage.end();) { std::map::iterator conf_i = configureStorage.find(i->first); if (conf_i == configureStorage.end() || conf_i->second <= 0) { delete i->second; - storage.erase(i); + storage.erase(i++); } else { i->second->setMemLimit(conf_i->second); + ++i; } }