diff options
author | MarcoFalke <falke.marco@gmail.com> | 2019-06-27 14:11:25 -0400 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2019-06-27 14:42:06 -0400 |
commit | fa69c3e6ca71800376761e264320c363f072dc2f (patch) | |
tree | ccd6bdbfb4f351c08928a18ed31875d3ecefa9ce /src/util/system.cpp | |
parent | 3077f11dadffbc8f2575449fc0177c91a9c3e046 (diff) |
util: Explain why the path is cached
Diffstat (limited to 'src/util/system.cpp')
-rw-r--r-- | src/util/system.cpp | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/src/util/system.cpp b/src/util/system.cpp index fca29a9f31..87ff6e62ba 100644 --- a/src/util/system.cpp +++ b/src/util/system.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2009-2018 The Bitcoin Core developers +// Copyright (c) 2009-2019 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -705,19 +705,16 @@ fs::path GetDefaultDataDir() static fs::path g_blocks_path_cache_net_specific; static fs::path pathCached; static fs::path pathCachedNetSpecific; -static CCriticalSection csPathCached; +static RecursiveMutex csPathCached; const fs::path &GetBlocksDir() { - LOCK(csPathCached); - fs::path &path = g_blocks_path_cache_net_specific; - // This can be called during exceptions by LogPrintf(), so we cache the - // value so we don't have to do memory allocations after that. - if (!path.empty()) - return path; + // Cache the path to avoid calling fs::create_directories on every call of + // this function + if (!path.empty()) return path; if (gArgs.IsArgSet("-blocksdir")) { path = fs::system_complete(gArgs.GetArg("-blocksdir", "")); @@ -737,15 +734,12 @@ const fs::path &GetBlocksDir() const fs::path &GetDataDir(bool fNetSpecific) { - LOCK(csPathCached); - fs::path &path = fNetSpecific ? pathCachedNetSpecific : pathCached; - // This can be called during exceptions by LogPrintf(), so we cache the - // value so we don't have to do memory allocations after that. - if (!path.empty()) - return path; + // Cache the path to avoid calling fs::create_directories on every call of + // this function + if (!path.empty()) return path; if (gArgs.IsArgSet("-datadir")) { path = fs::system_complete(gArgs.GetArg("-datadir", "")); |