]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Move cacheDigestDestroy to CacheDigest destructor
authorAmos Jeffries <squid3@treenet.co.nz>
Thu, 5 Nov 2015 14:10:02 +0000 (06:10 -0800)
committerAmos Jeffries <squid3@treenet.co.nz>
Thu, 5 Nov 2015 14:10:02 +0000 (06:10 -0800)
src/CacheDigest.cc
src/CacheDigest.h
src/peer_digest.cc
src/store.cc
src/test_cache_digest.cc
src/tests/stub_CacheDigest.cc

index c2814ce802d7a12f796883c077e162f34f93f936..4ad5a9050eff63ffe89719a6bcd46dd856b95332 100644 (file)
@@ -49,7 +49,7 @@ cacheDigestInit(CacheDigest * cd, int capacity, int bpe)
            << cd->mask_size << " bytes");
 }
 
-CacheDigest::CacheDigest(int capacity, int bpe) :
+CacheDigest::CacheDigest(int aCapacity, int bpe) :
         mask(nullptr),
         mask_size(0),
         capacity(0),
@@ -58,23 +58,12 @@ CacheDigest::CacheDigest(int capacity, int bpe) :
         del_count(0)
 {
     assert(SQUID_MD5_DIGEST_LENGTH == 16);  /* our hash functions rely on 16 byte keys */
-    cacheDigestInit(this, capacity, bpe);
+    cacheDigestInit(this, aCapacity, bpe);
 }
 
-static void
-cacheDigestClean(CacheDigest * cd)
+CacheDigest::~CacheDigest()
 {
-    assert(cd);
-    xfree(cd->mask);
-    cd->mask = NULL;
-}
-
-void
-cacheDigestDestroy(CacheDigest * cd)
-{
-    assert(cd);
-    cacheDigestClean(cd);
-    delete cd;
+    xfree(mask);
 }
 
 CacheDigest *
@@ -103,8 +92,8 @@ void
 cacheDigestChangeCap(CacheDigest * cd, int new_cap)
 {
     assert(cd);
-    cacheDigestClean(cd);
-    cacheDigestInit(cd, new_cap, cd->bits_per_entry);
+    safe_free(cd->mask);
+    cacheDigestInit(cd, new_cap, cd->bits_per_entry); // will re-init mask and mask_size
 }
 
 /* returns true if the key belongs to the digest */
index b71c64a4ccc38765816daa098b149056fdc1e799..c76a855001df5f21f126b38028bb3c6efc105105 100644 (file)
@@ -22,6 +22,7 @@ class CacheDigest
     MEMPROXY_CLASS(CacheDigest);
 public:
     CacheDigest(int capacity, int bpe);
+    ~CacheDigest();
 
 public:
     /* public, read-only */
@@ -33,7 +34,6 @@ public:
     int del_count;      /* number of deletions performed so far */
 };
 
-void cacheDigestDestroy(CacheDigest * cd);
 CacheDigest *cacheDigestClone(const CacheDigest * cd);
 void cacheDigestClear(CacheDigest * cd);
 void cacheDigestChangeCap(CacheDigest * cd, int new_cap);
index 1ce8857e4f872280e2731ba7d4703a16c8390137..85df88c6afd351ea726bb73e278d05dd4f9908bc 100644 (file)
@@ -35,7 +35,6 @@
 static time_t peerDigestIncDelay(const PeerDigest * pd);
 static time_t peerDigestNewDelay(const StoreEntry * e);
 static void peerDigestSetCheck(PeerDigest * pd, time_t delay);
-static void peerDigestClean(PeerDigest *);
 static EVH peerDigestCheck;
 static void peerDigestRequest(PeerDigest * pd);
 static STCB peerDigestHandleReply;
@@ -86,17 +85,6 @@ peerDigestInit(PeerDigest * pd, CachePeer * p)
     pd->times.initialized = squid_curtime;
 }
 
-static void
-peerDigestClean(PeerDigest * pd)
-{
-    assert(pd);
-
-    if (pd->cd)
-        cacheDigestDestroy(pd->cd);
-
-    pd->host.clean();
-}
-
 CBDATA_CLASS_INIT(PeerDigest);
 
 CBDATA_CLASS_INIT(DigestFetchState);
@@ -171,7 +159,8 @@ peerDigestDestroy(PeerDigest * pd)
     if (cbdataReferenceValidDone(peerTmp, &p))
         peerNoteDigestGone((CachePeer *)p);
 
-    peerDigestClean(pd);
+    delete pd->cd;
+    pd->host.clean();
 
     delete pd;
 }
@@ -200,10 +189,8 @@ peerDigestDisable(PeerDigest * pd)
     pd->times.next_check = -1;  /* never */
     pd->flags.usable = 0;
 
-    if (pd->cd) {
-        cacheDigestDestroy(pd->cd);
-        pd->cd = NULL;
-    }
+    delete pd->cd
+    pd->cd = nullptr;
 
     /* we do not destroy the pd itself to preserve its "history" and stats */
 }
@@ -861,10 +848,8 @@ peerDigestPDFinish(DigestFetchState * fetch, int pcb_valid, int err)
     if (err) {
         debugs(72, DBG_IMPORTANT, "" << (pcb_valid ? "temporary " : "" ) << "disabling (" << pd->req_result << ") digest from " << host);
 
-        if (pd->cd) {
-            cacheDigestDestroy(pd->cd);
-            pd->cd = NULL;
-        }
+        delete pd->cd;
+        pd->cd = nullptr;
 
         pd->flags.usable = false;
 
@@ -1015,8 +1000,8 @@ peerDigestSetCBlock(PeerDigest * pd, const char *buf)
         debugs(72, 2, host << " digest changed size: " << cblock.mask_size <<
                " -> " << pd->cd->mask_size);
         freed_size = pd->cd->mask_size;
-        cacheDigestDestroy(pd->cd);
-        pd->cd = NULL;
+        delete pd->cd;
+        pd->cd = nullptr;
     }
 
     if (!pd->cd) {
index 168a15ac6118f83c72c3fdbb745b7a37d6854d71..837cd57ff28190815a78cec258175a102f0cf867 100644 (file)
@@ -1521,12 +1521,8 @@ storeFreeMemory(void)
 {
     Store::Root(NULL);
 #if USE_CACHE_DIGESTS
-
-    if (store_digest)
-        cacheDigestDestroy(store_digest);
-
+    delete store_digest;
 #endif
-
     store_digest = NULL;
 }
 
index c10f48d0bba4915ed26119ca69fd33c42242584c..b0e8701140b3a9a06ea57efc940ae99c663a3b98 100644 (file)
@@ -233,9 +233,7 @@ cacheDestroy(Cache * cache)
     /* destroy the hash table itself */
     hashFreeMemory(hash);
 
-    if (cache->digest)
-        cacheDigestDestroy(cache->digest);
-
+    delete cache->digest;
     xfree(cache);
 }
 
@@ -251,11 +249,9 @@ cacheResetDigest(Cache * cache)
     assert(cache);
     fprintf(stderr, "%s: init-ing digest with %d entries\n", cache->name, cache->count);
 
-    if (cache->digest)
-        cacheDigestDestroy(cache->digest);
-
     hash = cache->hash;
 
+    delete cache->digest;
     cache->digest = new CacheDigest(cache->count + 1, 6);
 
     if (!cache->count)
index fca5aff55de0332ea67fca814ced6cb0a4648054..851ac8fd8222037213be15ed542f3b42828bf67f 100644 (file)
@@ -18,7 +18,7 @@ class StoreEntry;
 
 #include "CacheDigest.h"
 CacheDigest::CacheDigest(int, int) {STUB}
-void cacheDigestDestroy(CacheDigest *) STUB
+CacheDigest::~CacheDigest() {STUB}
 CacheDigest * cacheDigestClone(const CacheDigest *) STUB_RETVAL(NULL)
 void cacheDigestClear(CacheDigest * ) STUB
 void cacheDigestChangeCap(CacheDigest *,int) STUB