From 4387e502023b77b010c371701203a459b9e139e9 Mon Sep 17 00:00:00 2001 From: Martchus Date: Fri, 27 Nov 2020 00:40:45 +0100 Subject: [PATCH] Join all threads before destructing the renaming engine --- renamingutility/renamingengine.cpp | 11 +++++++++++ renamingutility/renamingengine.h | 1 + 2 files changed, 12 insertions(+) diff --git a/renamingutility/renamingengine.cpp b/renamingutility/renamingengine.cpp index cb1dd37..226be8f 100644 --- a/renamingutility/renamingengine.cpp +++ b/renamingutility/renamingengine.cpp @@ -36,6 +36,17 @@ RenamingEngine::RenamingEngine(QObject *parent) connect(this, &RenamingEngine::changingsApplied, this, &RenamingEngine::processChangingsApplied); } +RenamingEngine::~RenamingEngine() +{ +#ifndef TAGEDITOR_NO_JSENGINE + for (auto *const child : children()) { + if (auto *const childThread = qobject_cast(child)) { + childThread->wait(); + } + } +#endif +} + #ifndef TAGEDITOR_NO_JSENGINE bool RenamingEngine::setProgram(const TAGEDITOR_JS_VALUE &program) { diff --git a/renamingutility/renamingengine.h b/renamingutility/renamingengine.h index af2dfee..3290d8d 100644 --- a/renamingutility/renamingengine.h +++ b/renamingutility/renamingengine.h @@ -56,6 +56,7 @@ class RenamingEngine : public QObject { public: explicit RenamingEngine(QObject *parent = nullptr); + ~RenamingEngine() override; FileSystemItem *rootItem() const; #ifndef TAGEDITOR_NO_JSENGINE