]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Replace aclDestroyRegexList() with RegexList delete operator
authorAmos Jeffries <squid3@treenet.co.nz>
Sun, 26 Jul 2015 18:34:36 +0000 (11:34 -0700)
committerAmos Jeffries <squid3@treenet.co.nz>
Sun, 26 Jul 2015 18:34:36 +0000 (11:34 -0700)
src/RegexList.cc
src/RegexList.h
src/acl/RegexData.cc

index 71f520d32217974a0ba08e6589e7eb143afbd88a..13de2d0f08748a7c06d642244152d26d2ab560ce 100644 (file)
@@ -9,3 +9,17 @@
 #include "squid.h"
 #include "RegexList.h"
 
+RegexList::~RegexList()
+{
+    xfree(pattern);
+    regfree(&regex);
+
+    // lists could be very long
+    // iterate instead of recursing
+    for (auto p = next; p; p = next) {
+        next = p->next;
+        p->next = nullptr;
+        delete p;
+    }
+}
+
index 214d631ba83497d8bcd822a1c8cfc8e2e5b839ac..fe783b81e800e10aad8dd63b4b768c4fe8e03eb5 100644 (file)
@@ -11,6 +11,8 @@
 
 #include "mem/forward.h"
 
+#include <regex>
+
 /// list of regular expressions.
 class RegexList
 {
@@ -20,8 +22,8 @@ public:
     RegexList() = delete;
     RegexList(int aFlags, const char *aPattern) : flags(aFlags), pattern(xstrdup(aPattern)), next(nullptr) {}
     RegexList(const RegexList &) = delete;
-    RegexList(const RegexList &&) = delete;
-    ~RegexList() {xfree(pattern); regfree(&regex); delete next;}
+    RegexList(const RegexList && o) = delete;
+    ~RegexList();
 
     int flags;
     char *pattern;
index 1b1bb00901acfcdde8be729260676863dda8d296..82b8b37d6eebbdd140d8bf1c41234f420f027f14 100644 (file)
 #include "RegexList.h"
 #include "wordlist.h"
 
-static void
-aclDestroyRegexList(RegexList * data)
-{
-    RegexList *next = NULL;
-
-    for (; data; data = next) {
-        next = data->next;
-        delete data;
-    }
-}
-
 ACLRegexData::~ACLRegexData()
 {
-    aclDestroyRegexList(data);
+    delete data;
 }
 
 bool
@@ -189,7 +178,7 @@ compileOptimisedREs(RegexList **curlist, wordlist * wl)
                 debugs(28, 2, "compileOptimisedREs: -i" );
                 newlistp = compileRE( newlistp, largeRE, flags );
                 if (newlistp == NULL) {
-                    aclDestroyRegexList( newlist );
+                    delete newlist;
                     return 0;
                 }
                 flags |= REG_ICASE;
@@ -203,7 +192,7 @@ compileOptimisedREs(RegexList **curlist, wordlist * wl)
                 debugs(28, 2, "compileOptimisedREs: +i");
                 newlistp = compileRE( newlistp, largeRE, flags );
                 if (newlistp == NULL) {
-                    aclDestroyRegexList( newlist );
+                    delete newlist;
                     return 0;
                 }
                 flags &= ~REG_ICASE;
@@ -229,7 +218,7 @@ compileOptimisedREs(RegexList **curlist, wordlist * wl)
             debugs(28, 2, "compileOptimisedREs: buffer full, generating new optimised RE..." );
             newlistp = compileRE( newlistp, largeRE, flags );
             if (newlistp == NULL) {
-                aclDestroyRegexList( newlist );
+                delete newlist;
                 return 0;
             }
             largeRE[largeREindex=0] = '\0';
@@ -240,7 +229,7 @@ compileOptimisedREs(RegexList **curlist, wordlist * wl)
 
     newlistp = compileRE( newlistp, largeRE, flags );
     if (newlistp == NULL) {
-        aclDestroyRegexList( newlist );
+        delete newlist;
         return 0;
     }