mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 20:42:59 +01:00
Acquire CCheckQueue's lock to avoid race condition
This fixes a potential race condition in the CCheckQueueControl constructor,
which was looking directly at data in CCheckQueue without acquiring its lock.
Remove the now-unnecessary friendship for CCheckQueueControl
Rebased-From: cf008ac8c3
Github-Pull: #5721
This commit is contained in:
parent
7f502be259
commit
d148f62e00
@ -161,7 +161,12 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
friend class CCheckQueueControl<T>;
|
bool IsIdle()
|
||||||
|
{
|
||||||
|
boost::unique_lock<boost::mutex> lock(mutex);
|
||||||
|
return (nTotal == nIdle && nTodo == 0 && fAllOk == true);
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -180,9 +185,8 @@ public:
|
|||||||
{
|
{
|
||||||
// passed queue is supposed to be unused, or NULL
|
// passed queue is supposed to be unused, or NULL
|
||||||
if (pqueue != NULL) {
|
if (pqueue != NULL) {
|
||||||
assert(pqueue->nTotal == pqueue->nIdle);
|
bool isIdle = pqueue->IsIdle();
|
||||||
assert(pqueue->nTodo == 0);
|
assert(isIdle);
|
||||||
assert(pqueue->fAllOk == true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user