]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Do not increment an iterator invalidated by std::map::erase().
authorAlex Rousskov <rousskov@measurement-factory.com>
Thu, 16 Apr 2015 04:10:51 +0000 (22:10 -0600)
committerAlex Rousskov <rousskov@measurement-factory.com>
Thu, 16 Apr 2015 04:10:51 +0000 (22:10 -0600)
src/ssl/context_storage.cc

index 41e5de6db6d51e877c3cbc578484eb63f4af5328..293e91d48f609f3e1739c659f1f6d45ce1539f43 100644 (file)
@@ -95,13 +95,14 @@ void Ssl::GlobalContextStorage::reconfigureFinish()
         reconfiguring = false;
 
         // remove or change old local storages.
-        for (std::map<Ip::Address, LocalContextStorage *>::iterator i = storage.begin(); i != storage.end(); ++i) {
+        for (std::map<Ip::Address, LocalContextStorage *>::iterator i = storage.begin(); i != storage.end();) {
             std::map<Ip::Address, size_t>::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;
             }
         }