From 376626560237c263c79103930590eafa4d4dd8d0 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 29 Jun 2017 11:06:09 -0700 Subject: 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 Reviewed-by: Oswald Buddenhagen --- src/corelib/io/qtemporaryfile.cpp | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) (limited to 'src/corelib/io/qtemporaryfile.cpp') diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp index a7fa485399..b8054c3338 100644 --- a/src/corelib/io/qtemporaryfile.cpp +++ b/src/corelib/io/qtemporaryfile.cpp @@ -269,13 +269,6 @@ void QTemporaryFileEngine::setFileName(const QString &file) QFSFileEngine::setFileName(file); } -void QTemporaryFileEngine::setFileTemplate(const QString &fileTemplate) -{ - Q_D(QFSFileEngine); - if (filePathIsTemplate) - d->fileEntry = QFileSystemEntry(fileTemplate); -} - bool QTemporaryFileEngine::open(QIODevice::OpenMode openMode) { Q_D(QFSFileEngine); @@ -286,7 +279,7 @@ bool QTemporaryFileEngine::open(QIODevice::OpenMode openMode) if (!filePathIsTemplate) return QFSFileEngine::open(openMode); - QString qfilename = d->fileEntry.filePath(); + QString qfilename = templateName; // Ensure there is a placeholder mask uint phPos = qfilename.length(); @@ -425,7 +418,7 @@ QTemporaryFilePrivate::~QTemporaryFilePrivate() QAbstractFileEngine *QTemporaryFilePrivate::engine() const { if (!fileEngine) { - fileEngine = new QTemporaryFileEngine; + fileEngine = new QTemporaryFileEngine(&templateName); resetFileEngine(); } return fileEngine; @@ -684,8 +677,6 @@ void QTemporaryFile::setFileTemplate(const QString &name) { Q_D(QTemporaryFile); d->templateName = name; - if (d->fileEngine) - static_cast(d->fileEngine)->setFileTemplate(name); } /*! -- cgit v1.2.3