]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Fix uses of std::remove to actually resize the data structures which were cleaned-up.
authorFrancesco Chemolli <kinkie@squid-cache.org>
Wed, 19 Feb 2014 17:01:30 +0000 (18:01 +0100)
committerFrancesco Chemolli <kinkie@squid-cache.org>
Wed, 19 Feb 2014 17:01:30 +0000 (18:01 +0100)
src/HttpHeader.cc
src/adaptation/Config.cc

index de002db6bceb9e9cb45e667acbb9e965fa38fcda..56eb4b32e61dcf039829cada933ee8a5b59a172e 100644 (file)
@@ -892,7 +892,10 @@ HttpHeader::delAt(HttpHeaderPos pos, int &headers_deleted)
 void
 HttpHeader::compact()
 {
-    std::remove(entries.begin(), entries.end(), static_cast<HttpHeaderEntry *>(NULL));
+    // TODO: optimize removal, or possibly make it so that's not needed.
+    std::vector<HttpHeaderEntry *>::iterator newend;
+    newend = std::remove(entries.begin(), entries.end(), static_cast<HttpHeaderEntry *>(NULL));
+    entries.resize(newend-entries.begin());
 }
 
 /*
index 247731b901f5abfbf500b72a5a5f439285897725..62f68c3ee5b3f6bbe688fa57b2e1e95111cae332 100644 (file)
@@ -88,7 +88,9 @@ Adaptation::Config::removeService(const String& service)
         for (SGSI it = services.begin(); it != services.end(); ++it) {
             if (*it == service) {
                 group->removedServices.push_back(service);
-                std::remove(group->services.begin(), group->services.end(), service);
+                ServiceGroup::Store::iterator newend;
+                newend = std::remove(group->services.begin(), group->services.end(), service);
+                group->services.resize(newend-group->services.begin());
                 debugs(93, 5, "adaptation service " << service <<
                        " removed from group " << group->id);
                 break;
@@ -96,7 +98,9 @@ Adaptation::Config::removeService(const String& service)
         }
         if (services.empty()) {
             removeRule(group->id);
-            std::remove(AllGroups().begin(), AllGroups().end(), group);
+            Groups::iterator newend;
+            newend = std::remove(AllGroups().begin(), AllGroups().end(), group);
+            AllGroups().resize(newend-AllGroups().begin());
         } else {
             ++i;
         }
@@ -124,7 +128,9 @@ Adaptation::Config::removeRule(const String& id)
         AccessRule* rule = *it;
         if (rule->groupId == id) {
             debugs(93, 5, "removing access rules for:" << id);
-            std::remove(AllRules().begin(), AllRules().end(), rule);
+            AccessRules::iterator newend;
+            newend = std::remove(AllRules().begin(), AllRules().end(), rule);
+            AllRules().resize(newend-AllRules().begin());
             delete (rule);
             break;
         }