From dffc8bcea0b98f116150872d40301136194ac94a Mon Sep 17 00:00:00 2001 From: SChernykh Date: Thu, 22 Dec 2022 13:33:44 +0100 Subject: [PATCH] Fixed cppcheck issues --- cppcheck/suppressions.txt | 1 + src/block_cache.cpp | 10 ++++++++-- src/block_cache.h | 1 + src/log.cpp | 1 + src/p2pool.h | 2 +- src/side_chain.cpp | 2 +- src/side_chain.h | 2 +- 7 files changed, 14 insertions(+), 5 deletions(-) diff --git a/cppcheck/suppressions.txt b/cppcheck/suppressions.txt index d4317c5..9cc7320 100644 --- a/cppcheck/suppressions.txt +++ b/cppcheck/suppressions.txt @@ -1,3 +1,4 @@ +unmatchedSuppression missingIncludeSystem unusedFunction useStlAlgorithm diff --git a/src/block_cache.cpp b/src/block_cache.cpp index 0a3346e..ddaeb6b 100644 --- a/src/block_cache.cpp +++ b/src/block_cache.cpp @@ -145,7 +145,7 @@ struct BlockCache::Impl : public nocopy_nomove #else // Not implemented on other platforms - void flush() {} + void flush() { m_data = nullptr; } #endif uint8_t* m_data = nullptr; @@ -155,6 +155,7 @@ BlockCache::BlockCache() : m_impl(new Impl()) , m_flushRunning(0) , m_storeIndex(0) + , m_loadingStarted(0) { } @@ -188,6 +189,11 @@ void BlockCache::load_all(SideChain& side_chain, P2PServer& server) return; } + // Can be only called once + if (m_loadingStarted.exchange(1)) { + return; + } + LOGINFO(1, "loading cached blocks"); PoolBlock block; @@ -212,7 +218,7 @@ void BlockCache::load_all(SideChain& side_chain, P2PServer& server) void BlockCache::flush() { - if (m_flushRunning.exchange(1) == 0) { + if (m_flushRunning.exchange(1)) { m_impl->flush(); m_flushRunning.store(0); } diff --git a/src/block_cache.h b/src/block_cache.h index d53eb7a..d0dc679 100644 --- a/src/block_cache.h +++ b/src/block_cache.h @@ -38,6 +38,7 @@ private: Impl* m_impl; std::atomic m_flushRunning; std::atomic m_storeIndex; + std::atomic m_loadingStarted; }; } // namespace p2pool diff --git a/src/log.cpp b/src/log.cpp index 9a4551b..b8ff7ab 100644 --- a/src/log.cpp +++ b/src/log.cpp @@ -321,6 +321,7 @@ static Worker worker; NOINLINE Writer::Writer(Severity severity) : Stream(m_stackBuf) { + m_stackBuf[BUF_SIZE] = '\0'; m_buf[0] = static_cast(severity); m_pos = 3; diff --git a/src/p2pool.h b/src/p2pool.h index 3cfb8f4..79d59b4 100644 --- a/src/p2pool.h +++ b/src/p2pool.h @@ -35,7 +35,7 @@ class p2pool_api; class ZMQReader; struct PoolBlock; -class p2pool : public MinerCallbackHandler +class p2pool : public MinerCallbackHandler, public nocopy_nomove { public: p2pool(int argc, char* argv[]); diff --git a/src/side_chain.cpp b/src/side_chain.cpp index 96d0461..664be85 100644 --- a/src/side_chain.cpp +++ b/src/side_chain.cpp @@ -2024,7 +2024,7 @@ bool SideChain::load_config(const std::string& filename) return true; } -bool SideChain::check_config() +bool SideChain::check_config() const { if (m_poolName.empty()) { LOGERR(1, "name can't be empty"); diff --git a/src/side_chain.h b/src/side_chain.h index ae8785e..1494f88 100644 --- a/src/side_chain.h +++ b/src/side_chain.h @@ -99,7 +99,7 @@ private: void prune_old_blocks(); bool load_config(const std::string& filename); - bool check_config(); + bool check_config() const; mutable uv_rwlock_t m_sidechainLock; std::atomic m_chainTip;