diff --git a/src/net.h b/src/net.h --- a/src/net.h +++ b/src/net.h @@ -394,8 +394,8 @@ /** Services this instance cares about */ ServiceFlags nRelevantServices; - CSemaphore *semOutbound; - CSemaphore *semAddnode; + std::unique_ptr semOutbound; + std::unique_ptr semAddnode; int nMaxConnections; int nMaxOutbound; int nMaxAddnode; @@ -656,7 +656,7 @@ bool fSentAddr; CSemaphoreGrant grantOutbound; CCriticalSection cs_filter; - CBloomFilter *pfilter; + std::unique_ptr pfilter; std::atomic nRefCount; const uint64_t nKeyedNetGroup; diff --git a/src/net.cpp b/src/net.cpp --- a/src/net.cpp +++ b/src/net.cpp @@ -2353,8 +2353,6 @@ nLastNodeId = 0; nSendBufferMaxSize = 0; nReceiveFloodSize = 0; - semOutbound = nullptr; - semAddnode = nullptr; flagInterruptMsgProc = false; Options connOptions; @@ -2470,12 +2468,12 @@ if (semOutbound == nullptr) { // initialize semaphore - semOutbound = new CSemaphore( - std::min((nMaxOutbound + nMaxFeeler), nMaxConnections)); + semOutbound = std::unique_ptr(new CSemaphore( + std::min((nMaxOutbound + nMaxFeeler), nMaxConnections))); } if (semAddnode == nullptr) { // initialize semaphore - semAddnode = new CSemaphore(nMaxAddnode); + semAddnode = std::unique_ptr(new CSemaphore(nMaxAddnode)); } // @@ -2613,10 +2611,8 @@ vNodes.clear(); vNodesDisconnected.clear(); vhListenSocket.clear(); - delete semOutbound; - semOutbound = nullptr; - delete semAddnode; - semAddnode = nullptr; + semOutbound.reset(); + semAddnode.reset(); } void CConnman::DeleteNode(CNode *pnode) { @@ -2896,7 +2892,7 @@ nNextInvSend = 0; fRelayTxes = false; fSentAddr = false; - pfilter = new CBloomFilter(); + pfilter = std::unique_ptr(new CBloomFilter()); timeLastMempoolReq = 0; nLastBlockTime = 0; nLastTXTime = 0; @@ -2926,10 +2922,6 @@ CNode::~CNode() { CloseSocket(hSocket); - - if (pfilter) { - delete pfilter; - } } void CNode::AskFor(const CInv &inv) { diff --git a/src/net_processing.cpp b/src/net_processing.cpp --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -2907,8 +2907,7 @@ Misbehaving(pfrom, 100, "oversized-bloom-filter"); } else { LOCK(pfrom->cs_filter); - delete pfrom->pfilter; - pfrom->pfilter = new CBloomFilter(filter); + pfrom->pfilter.reset(new CBloomFilter(filter)); pfrom->pfilter->UpdateEmptyFull(); pfrom->fRelayTxes = true; } @@ -2943,8 +2942,7 @@ else if (strCommand == NetMsgType::FILTERCLEAR) { LOCK(pfrom->cs_filter); if (pfrom->GetLocalServices() & NODE_BLOOM) { - delete pfrom->pfilter; - pfrom->pfilter = new CBloomFilter(); + pfrom->pfilter.reset(new CBloomFilter()); } pfrom->fRelayTxes = true; }