From 04caf1c1ffe871fef86803e187a596f2a950bc9a Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Fri, 17 May 2024 14:30:31 +0300 Subject: [PATCH] karchivemanager: interrupt thread and wait for it to finish from KArchiveModel destructor Signed-off-by: Ivailo Monev --- karchivemanager/karchivemanager.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/karchivemanager/karchivemanager.cpp b/karchivemanager/karchivemanager.cpp index 2b57017e..40c258cf 100644 --- a/karchivemanager/karchivemanager.cpp +++ b/karchivemanager/karchivemanager.cpp @@ -84,7 +84,8 @@ protected: KArchiveModelPrivate::KArchiveModelPrivate(QObject *parent) : QThread(parent), - m_interrupt(false) { + m_interrupt(false) +{ } // because altering paths is not easy @@ -182,7 +183,7 @@ void KArchiveModelPrivate::run() m_interrupt = false; foreach (const KArchiveEntry &info, m_list) { - if(m_interrupt) { + if (m_interrupt) { return; } @@ -207,9 +208,11 @@ KArchiveModel::KArchiveModel(QObject *parent) KArchiveModel::~KArchiveModel() { - if (d) { - delete d; + if (d->isRunning()) { + d->requestInterruption(); + d->wait(); } + delete d; } bool KArchiveModel::loadArchive(const KArchive *archive)