From: Amos Jeffries Date: Thu, 5 Nov 2015 14:10:02 +0000 (-0800) Subject: Move cacheDigestDestroy to CacheDigest destructor X-Git-Tag: SQUID_4_0_3~18^2~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a901d0b4607ea671cf7e3019552d1e898a8d73ad;p=thirdparty%2Fsquid.git Move cacheDigestDestroy to CacheDigest destructor --- diff --git a/src/CacheDigest.cc b/src/CacheDigest.cc index c2814ce802..4ad5a9050e 100644 --- a/src/CacheDigest.cc +++ b/src/CacheDigest.cc @@ -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 */ diff --git a/src/CacheDigest.h b/src/CacheDigest.h index b71c64a4cc..c76a855001 100644 --- a/src/CacheDigest.h +++ b/src/CacheDigest.h @@ -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); diff --git a/src/peer_digest.cc b/src/peer_digest.cc index 1ce8857e4f..85df88c6af 100644 --- a/src/peer_digest.cc +++ b/src/peer_digest.cc @@ -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) { diff --git a/src/store.cc b/src/store.cc index 168a15ac61..837cd57ff2 100644 --- a/src/store.cc +++ b/src/store.cc @@ -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; } diff --git a/src/test_cache_digest.cc b/src/test_cache_digest.cc index c10f48d0bb..b0e8701140 100644 --- a/src/test_cache_digest.cc +++ b/src/test_cache_digest.cc @@ -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) diff --git a/src/tests/stub_CacheDigest.cc b/src/tests/stub_CacheDigest.cc index fca5aff55d..851ac8fd82 100644 --- a/src/tests/stub_CacheDigest.cc +++ b/src/tests/stub_CacheDigest.cc @@ -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