]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Do not increment an iterator invalidated by std::map::erase().
authorAlex Rousskov <rousskov@measurement-factory.com>
Mon, 20 Apr 2015 02:41:44 +0000 (19:41 -0700)
committerAmos Jeffries <squid3@treenet.co.nz>
Mon, 20 Apr 2015 02:41:44 +0000 (19:41 -0700)
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;
             }
         }