diff --git a/src/net.h b/src/net.h --- a/src/net.h +++ b/src/net.h @@ -387,8 +387,8 @@ /** Services this instance offers */ ServiceFlags nLocalServices; - CSemaphore *semOutbound; - CSemaphore *semAddnode; + std::unique_ptr semOutbound; + std::unique_ptr semAddnode; int nMaxConnections; int nMaxOutbound; int nMaxAddnode; @@ -647,7 +647,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 @@ -2346,8 +2346,6 @@ nLastNodeId = 0; nSendBufferMaxSize = 0; nReceiveFloodSize = 0; - semOutbound = nullptr; - semAddnode = nullptr; flagInterruptMsgProc = false; Options connOptions; @@ -2463,12 +2461,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)); } // @@ -2606,10 +2604,8 @@ vNodes.clear(); vNodesDisconnected.clear(); vhListenSocket.clear(); - delete semOutbound; - semOutbound = nullptr; - delete semAddnode; - semAddnode = nullptr; + semOutbound.reset(); + semAddnode.reset(); } void CConnman::DeleteNode(CNode *pnode) { @@ -2888,7 +2884,7 @@ nNextInvSend = 0; fRelayTxes = false; fSentAddr = false; - pfilter = new CBloomFilter(); + pfilter = std::unique_ptr(new CBloomFilter()); timeLastMempoolReq = 0; nLastBlockTime = 0; nLastTXTime = 0; @@ -2918,10 +2914,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 @@ -2911,8 +2911,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; } @@ -2947,8 +2946,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; }