mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +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;
|
||||
}
|
||||
|
||||
for (auto i = unitsCopy.begin(); i != unitsCopy.end(); ++i)
|
||||
for (auto i : unitsCopy)
|
||||
{
|
||||
(*i)->onDone([&](const ExpectUnit* u){ unitsCopy.remove(u); });
|
||||
(*i)->init();
|
||||
i->onDone([&](const ExpectUnit* u){ unitsCopy.remove(u); });
|
||||
}
|
||||
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;
|
||||
timer.setSingleShot(true);
|
||||
QObject::connect(&timer, &QTimer::timeout, [=, &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();
|
||||
m_failed = true;
|
||||
@@ -101,4 +104,4 @@ void Expect::reportTimeout(const SourceLocation& srcloc, const QSet<const Expect
|
||||
QTest::qFail(qPrintable(msg), qPrintable(srcloc.file), srcloc.line);
|
||||
}
|
||||
|
||||
} //namespace BlackCoreTest
|
||||
} //namespace BlackCoreTest
|
||||
|
||||
Reference in New Issue
Block a user