diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2017-06-29 11:06:09 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2017-08-04 17:29:57 +0000 |
commit | 376626560237c263c79103930590eafa4d4dd8d0 (patch) | |
tree | 547122b352e4e8dc3ebb5cbbee4ef1effbdddc7e /src/corelib/io/qtemporaryfile_p.h | |
parent | 38bc95aeceea5b4edbcfaee446d94b6062530770 (diff) |
QTemporaryFile: give the engine access to the template name
Instead of storing it in d->fileEntry. The QFSFileEngine methods may try
to use it before the file entry is filled with the actual file name and
that's no good. This change is using a reference to avoid keeping an
extra QString reference and to avoid going out of sync.
Change-Id: I1eba2b016de74620bfc8fffd14cca9e340e4b1e2
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Diffstat (limited to 'src/corelib/io/qtemporaryfile_p.h')
-rw-r--r-- | src/corelib/io/qtemporaryfile_p.h | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/corelib/io/qtemporaryfile_p.h b/src/corelib/io/qtemporaryfile_p.h index bf40e1627a..2db07c36bc 100644 --- a/src/corelib/io/qtemporaryfile_p.h +++ b/src/corelib/io/qtemporaryfile_p.h @@ -85,22 +85,28 @@ class QTemporaryFileEngine : public QFSFileEngine { Q_DECLARE_PRIVATE(QFSFileEngine) public: + QTemporaryFileEngine(const QString *templateName) + : templateName(*templateName) + {} + void initialize(const QString &file, quint32 mode, bool nameIsTemplate = true) { Q_D(QFSFileEngine); Q_ASSERT(!isReallyOpen()); fileMode = mode; filePathIsTemplate = filePathWasTemplate = nameIsTemplate; - d->fileEntry = QFileSystemEntry(file); - if (!filePathIsTemplate) + if (filePathIsTemplate) { + d->fileEntry.clear(); + } else { + d->fileEntry = QFileSystemEntry(file); QFSFileEngine::setFileName(file); + } } ~QTemporaryFileEngine(); bool isReallyOpen() const; void setFileName(const QString &file) override; - void setFileTemplate(const QString &fileTemplate); bool open(QIODevice::OpenMode flags) override; bool remove() override; @@ -108,6 +114,7 @@ public: bool renameOverwrite(const QString &newName) override; bool close() override; + const QString &templateName; quint32 fileMode; bool filePathIsTemplate; bool filePathWasTemplate; |