forked from qt-creator/qt-creator
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:
@@ -25,13 +25,19 @@
|
|||||||
|
|
||||||
#include "temporarydirectory.h"
|
#include "temporarydirectory.h"
|
||||||
|
|
||||||
#include "qtcassert.h"
|
#include <QtCore/QCoreApplication>
|
||||||
|
|
||||||
#include <memory>
|
#include "qtcassert.h"
|
||||||
|
|
||||||
namespace Utils {
|
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) :
|
TemporaryDirectory::TemporaryDirectory(const QString &pattern) :
|
||||||
QTemporaryDir(m_masterTemporaryDir->path() + '/' + pattern)
|
QTemporaryDir(m_masterTemporaryDir->path() + '/' + pattern)
|
||||||
@@ -41,12 +47,16 @@ TemporaryDirectory::TemporaryDirectory(const QString &pattern) :
|
|||||||
|
|
||||||
QTemporaryDir *TemporaryDirectory::masterTemporaryDirectory()
|
QTemporaryDir *TemporaryDirectory::masterTemporaryDirectory()
|
||||||
{
|
{
|
||||||
return m_masterTemporaryDir.get();
|
return m_masterTemporaryDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TemporaryDirectory::setMasterTemporaryDirectory(const QString &pattern)
|
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()
|
QString TemporaryDirectory::masterDirectoryPath()
|
||||||
|
Reference in New Issue
Block a user