From 98820ab3e6f91e70a25eee47c8e1eaadd04c3143 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 9 May 2017 13:14:15 +0200 Subject: [PATCH] TemporaryDir: Use qAddPostRoutine() for cleanup Otherwise, the directory is not cleaned up on Windows. Task-number: QTCREATORBUG-18063 Change-Id: I2e89f7de7642879ea402b50866fbee7e462501b6 Reviewed-by: Tobias Hunger --- src/libs/utils/temporarydirectory.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/libs/utils/temporarydirectory.cpp b/src/libs/utils/temporarydirectory.cpp index c0d0c15cb1b..da539919e42 100644 --- a/src/libs/utils/temporarydirectory.cpp +++ b/src/libs/utils/temporarydirectory.cpp @@ -25,13 +25,19 @@ #include "temporarydirectory.h" -#include "qtcassert.h" +#include -#include +#include "qtcassert.h" namespace Utils { -static std::unique_ptr m_masterTemporaryDir; +static QTemporaryDir* m_masterTemporaryDir = nullptr; + +static void cleanupMasterTemporaryDir() +{ + delete m_masterTemporaryDir; + m_masterTemporaryDir = nullptr; +} TemporaryDirectory::TemporaryDirectory(const QString &pattern) : QTemporaryDir(m_masterTemporaryDir->path() + '/' + pattern) @@ -41,12 +47,16 @@ TemporaryDirectory::TemporaryDirectory(const QString &pattern) : QTemporaryDir *TemporaryDirectory::masterTemporaryDirectory() { - return m_masterTemporaryDir.get(); + return m_masterTemporaryDir; } void TemporaryDirectory::setMasterTemporaryDirectory(const QString &pattern) { - m_masterTemporaryDir = std::make_unique(pattern); + if (m_masterTemporaryDir) + cleanupMasterTemporaryDir(); + else + qAddPostRoutine(cleanupMasterTemporaryDir); + m_masterTemporaryDir = new QTemporaryDir(pattern); } QString TemporaryDirectory::masterDirectoryPath()