summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qtemporaryfile.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@theqtcompany.com>2015-07-17 15:06:22 +0200
committerSimon Hausmann <simon.hausmann@theqtcompany.com>2015-07-17 16:35:42 +0200
commitb2603b76655ac819e43c063bb6f16bc95f358083 (patch)
tree0fbe2c367ebfffdb70e9e3f21a7cf408bafd9626 /src/corelib/io/qtemporaryfile.cpp
parent99b94aadf875c822afb6c2580e43355ac392ac92 (diff)
parent756266d01560157b7274e466b9ffc1b0e2ef9a1f (diff)
Merge remote-tracking branch 'origin/5.5' into HEAD
Conflicts: src/plugins/platforms/windows/qwindowsopengltester.cpp Change-Id: Ia7abeba9395ccf84e2fa81b91a5725a86dedb9fe
Diffstat (limited to 'src/corelib/io/qtemporaryfile.cpp')
-rw-r--r--src/corelib/io/qtemporaryfile.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp
index bdf4392275..e8e8d8c878 100644
--- a/src/corelib/io/qtemporaryfile.cpp
+++ b/src/corelib/io/qtemporaryfile.cpp
@@ -409,14 +409,24 @@ QTemporaryFilePrivate::~QTemporaryFilePrivate()
QAbstractFileEngine *QTemporaryFilePrivate::engine() const
{
if (!fileEngine) {
- if (fileName.isEmpty())
- fileEngine = new QTemporaryFileEngine(templateName, 0600);
- else
- fileEngine = new QTemporaryFileEngine(fileName, 0600, false);
+ fileEngine = new QTemporaryFileEngine;
+ resetFileEngine();
}
return fileEngine;
}
+void QTemporaryFilePrivate::resetFileEngine() const
+{
+ if (!fileEngine)
+ return;
+
+ QTemporaryFileEngine *tef = static_cast<QTemporaryFileEngine *>(fileEngine);
+ if (fileName.isEmpty())
+ tef->initialize(templateName, 0600);
+ else
+ tef->initialize(fileName, 0600, false);
+}
+
QString QTemporaryFilePrivate::defaultTemplateName()
{
QString baseName;
@@ -769,6 +779,13 @@ bool QTemporaryFile::open(OpenMode flags)
}
}
+ // reset the engine state so it creates a new, unique file name from the template;
+ // equivalent to:
+ // delete d->fileEngine;
+ // d->fileEngine = 0;
+ // d->engine();
+ d->resetFileEngine();
+
if (QFile::open(flags)) {
d->fileName = d->fileEngine->fileName(QAbstractFileEngine::DefaultName);
return true;