aboutsummaryrefslogtreecommitdiff
path: root/src/sync.cpp
diff options
context:
space:
mode:
authorHennadii Stepanov <32963518+hebasto@users.noreply.github.com>2020-05-18 17:45:46 +0300
committerHennadii Stepanov <32963518+hebasto@users.noreply.github.com>2020-05-19 01:14:07 +0300
commit58e6881bc5be002e8ddbc9b75422c0deae66a2df (patch)
tree3fbf313131c6feb325dd0110ee50de50bff0b933 /src/sync.cpp
parentf511f61dda4e860079153d5e51d64658cc265283 (diff)
downloadbitcoin-58e6881bc5be002e8ddbc9b75422c0deae66a2df.tar.xz
refactor: Refactor duplicated code into LockHeld()
Diffstat (limited to 'src/sync.cpp')
-rw-r--r--src/sync.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/sync.cpp b/src/sync.cpp
index cfbbb78c6b..5817e22c86 100644
--- a/src/sync.cpp
+++ b/src/sync.cpp
@@ -185,23 +185,27 @@ std::string LocksHeld()
return result;
}
+static bool LockHeld(void* mutex)
+{
+ for (const LockStackItem& i : g_lockstack) {
+ if (i.first == mutex) return true;
+ }
+
+ return false;
+}
+
void AssertLockHeldInternal(const char* pszName, const char* pszFile, int nLine, void* cs)
{
- for (const LockStackItem& i : g_lockstack)
- if (i.first == cs)
- return;
+ if (LockHeld(cs)) return;
tfm::format(std::cerr, "Assertion failed: lock %s not held in %s:%i; locks held:\n%s", pszName, pszFile, nLine, LocksHeld());
abort();
}
void AssertLockNotHeldInternal(const char* pszName, const char* pszFile, int nLine, void* cs)
{
- for (const LockStackItem& i : g_lockstack) {
- if (i.first == cs) {
- tfm::format(std::cerr, "Assertion failed: lock %s held in %s:%i; locks held:\n%s", pszName, pszFile, nLine, LocksHeld());
- abort();
- }
- }
+ if (!LockHeld(cs)) return;
+ tfm::format(std::cerr, "Assertion failed: lock %s held in %s:%i; locks held:\n%s", pszName, pszFile, nLine, LocksHeld());
+ abort();
}
void DeleteLock(void* cs)