mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-31 01:24:19 +02:00
Add missing array locking in IcingaDB::GetArrayDeletedValues()
icinga::Array requires locking by the caller when iterating using Begin() and End(). This is only checked in debug builds but there it makes this function fail.
This commit is contained in:
parent
f67a5532dc
commit
de8960feaa
@ -266,14 +266,23 @@ std::vector<Value> IcingaDB::GetArrayDeletedValues(const Array::Ptr& arrayOld, c
|
||||
}
|
||||
|
||||
if (!arrayNew) {
|
||||
ObjectLock olock (arrayOld);
|
||||
return std::vector<Value>(arrayOld->Begin(), arrayOld->End());
|
||||
}
|
||||
|
||||
std::vector<Value> vectorOld(arrayOld->Begin(), arrayOld->End());
|
||||
std::vector<Value> vectorOld;
|
||||
{
|
||||
ObjectLock olock (arrayOld);
|
||||
vectorOld.assign(arrayOld->Begin(), arrayOld->End());
|
||||
}
|
||||
std::sort(vectorOld.begin(), vectorOld.end());
|
||||
vectorOld.erase(std::unique(vectorOld.begin(), vectorOld.end()), vectorOld.end());
|
||||
|
||||
std::vector<Value> vectorNew(arrayNew->Begin(), arrayNew->End());
|
||||
std::vector<Value> vectorNew;
|
||||
{
|
||||
ObjectLock olock (arrayNew);
|
||||
vectorNew.assign(arrayNew->Begin(), arrayNew->End());
|
||||
}
|
||||
std::sort(vectorNew.begin(), vectorNew.end());
|
||||
vectorNew.erase(std::unique(vectorNew.begin(), vectorNew.end()), vectorNew.end());
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user