File 0001-Avoid-crash-in-plasma-session-teardown.patch of Package plasma5-workspace.17560

From effe12a06dbdfaa53a3f74c71f03a3dfa1e00de2 Mon Sep 17 00:00:00 2001
From: David Edmundson <kde@davidedmundson.co.uk>
Date: Fri, 17 Jun 2022 19:08:41 +0100
Subject: [PATCH] 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 3692ff7ca4a927960883f737cf9f8e842bb2ee4a)
---
 startkde/plasma-session/sessiontrack.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/startkde/plasma-session/sessiontrack.cpp b/startkde/plasma-session/sessiontrack.cpp
index 850422066..5df86ee84 100644
--- a/startkde/plasma-session/sessiontrack.cpp
+++ b/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 {
-- 
2.36.1

openSUSE Build Service is sponsored by