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 <tobias.hunger@qt.io>
This commit is contained in:
Friedemann Kleint
2017-05-09 13:14:15 +02:00
parent 939913de5a
commit 98820ab3e6

View File

@@ -25,13 +25,19 @@
#include "temporarydirectory.h"
#include "qtcassert.h"
#include <QtCore/QCoreApplication>
#include <memory>
#include "qtcassert.h"
namespace Utils {
static std::unique_ptr<QTemporaryDir> 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<QTemporaryDir>(pattern);
if (m_masterTemporaryDir)
cleanupMasterTemporaryDir();
else
qAddPostRoutine(cleanupMasterTemporaryDir);
m_masterTemporaryDir = new QTemporaryDir(pattern);
}
QString TemporaryDirectory::masterDirectoryPath()