Avoid crash in plasma-session teardown

Whilst iterating through m_proccesses we make them finish. An existing
connect removes them from the vector.

Iterating through a volatile vector is unsafe.

BUG: 454159


(cherry picked from commit 3692ff7ca4)
wilder-5.25
David Edmundson 4 years ago committed by Nate Graham
parent ac7ff8e26a
commit d159d05baa
  1. 5
      startkde/plasma-session/sessiontrack.cpp

@ -37,7 +37,10 @@ SessionTrack::~SessionTrack()
for (auto process : std::as_const(m_processes)) {
process->terminate();
}
for (auto process : std::as_const(m_processes)) {
// copy before the loop as we remove finished processes from the vector
const QVector<QProcess *> processesCopy = m_processes;
for (auto process : processesCopy) {
if (process->state() == QProcess::Running && !process->waitForFinished(500)) {
process->kill();
} else {

Loading…
Cancel
Save