diff options
| author | Matt Corallo <[email protected]> | 2017-02-07 14:15:28 -0500 |
|---|---|---|
| committer | Matt Corallo <[email protected]> | 2017-02-07 14:15:28 -0500 |
| commit | 618ee9249b178d94911ea66cb4b5291f000ef1fb (patch) | |
| tree | dde47fee6a3afbdd91f54b35173e25812509de87 /src/sync.cpp | |
| parent | Fixup style a bit by moving { to the same line as if statements (diff) | |
| download | discoin-618ee9249b178d94911ea66cb4b5291f000ef1fb.tar.xz discoin-618ee9249b178d94911ea66cb4b5291f000ef1fb.zip | |
Further-enforce lockordering by enforcing directly after TRY_LOCKs
Diffstat (limited to 'src/sync.cpp')
| -rw-r--r-- | src/sync.cpp | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/src/sync.cpp b/src/sync.cpp index 25773f08e..fce57f1df 100644 --- a/src/sync.cpp +++ b/src/sync.cpp @@ -110,21 +110,19 @@ static void push_lock(void* c, const CLockLocation& locklocation, bool fTry) (*lockstack).push_back(std::make_pair(c, locklocation)); - if (!fTry) { - BOOST_FOREACH (const PAIRTYPE(void*, CLockLocation) & i, (*lockstack)) { - if (i.first == c) - break; - - std::pair<void*, void*> p1 = std::make_pair(i.first, c); - if (lockdata.lockorders.count(p1)) - continue; - lockdata.lockorders[p1] = (*lockstack); - - std::pair<void*, void*> p2 = std::make_pair(c, i.first); - lockdata.invlockorders.insert(p2); - if (lockdata.lockorders.count(p2)) - potential_deadlock_detected(p1, lockdata.lockorders[p2], lockdata.lockorders[p1]); - } + BOOST_FOREACH (const PAIRTYPE(void*, CLockLocation) & i, (*lockstack)) { + if (i.first == c) + break; + + std::pair<void*, void*> p1 = std::make_pair(i.first, c); + if (lockdata.lockorders.count(p1)) + continue; + lockdata.lockorders[p1] = (*lockstack); + + std::pair<void*, void*> p2 = std::make_pair(c, i.first); + lockdata.invlockorders.insert(p2); + if (lockdata.lockorders.count(p2)) + potential_deadlock_detected(p1, lockdata.lockorders[p2], lockdata.lockorders[p1]); } } |