Fix read access violation in test_blackcore

This commit is contained in:
Roland Winklmeier
2014-12-25 20:01:58 +01:00
parent 20f1aa7aa9
commit e75b1360bb

View File

@@ -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;