mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-15 01:05:35 +08:00
Fix read access violation in test_blackcore
This commit is contained in:
@@ -64,19 +64,22 @@ void Expect::wait(const SourceLocation& srcloc, int timeout)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto i = unitsCopy.begin(); i != unitsCopy.end(); ++i)
|
for (auto i : unitsCopy)
|
||||||
{
|
{
|
||||||
(*i)->onDone([&](const ExpectUnit* u){ unitsCopy.remove(u); });
|
i->onDone([&](const ExpectUnit* u){ unitsCopy.remove(u); });
|
||||||
(*i)->init();
|
}
|
||||||
|
for (auto i : unitsCopy.toList()) // toList is an easy way to make a temporary copy, needed because init might invalidate iterators
|
||||||
|
{
|
||||||
|
i->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
QTimer timer;
|
QTimer timer;
|
||||||
timer.setSingleShot(true);
|
timer.setSingleShot(true);
|
||||||
QObject::connect(&timer, &QTimer::timeout, [=, &unitsCopy]{
|
QObject::connect(&timer, &QTimer::timeout, [=, &unitsCopy]{
|
||||||
reportTimeout(srcloc, unitsCopy);
|
reportTimeout(srcloc, unitsCopy);
|
||||||
for (auto i = unitsCopy.begin(); i != unitsCopy.end(); ++i)
|
for (auto i : unitsCopy)
|
||||||
{
|
{
|
||||||
(*i)->onDone(nullptr); //paranoia
|
i->onDone(nullptr); //paranoia
|
||||||
}
|
}
|
||||||
unitsCopy.clear();
|
unitsCopy.clear();
|
||||||
m_failed = true;
|
m_failed = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user