summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/io/qabstractfileengine.cpp5
-rw-r--r--src/corelib/io/qabstractfileengine_p.h6
-rw-r--r--src/corelib/io/qfsfileengine.cpp7
-rw-r--r--src/corelib/io/qfsfileengine_p.h2
-rw-r--r--src/corelib/io/qresource.cpp5
5 files changed, 14 insertions, 11 deletions
diff --git a/src/corelib/io/qabstractfileengine.cpp b/src/corelib/io/qabstractfileengine.cpp
index 70e68be21c1..a3fa9c00f86 100644
--- a/src/corelib/io/qabstractfileengine.cpp
+++ b/src/corelib/io/qabstractfileengine.cpp
@@ -318,9 +318,8 @@ std::unique_ptr<QAbstractFileEngine> QAbstractFileEngine::create(const QString &
\sa setFileName()
*/
-QAbstractFileEngine::QAbstractFileEngine() : d_ptr(new QAbstractFileEnginePrivate)
+QAbstractFileEngine::QAbstractFileEngine() : d_ptr(new QAbstractFileEnginePrivate(this))
{
- d_ptr->q_ptr = this;
}
/*!
@@ -330,7 +329,7 @@ QAbstractFileEngine::QAbstractFileEngine() : d_ptr(new QAbstractFileEnginePrivat
*/
QAbstractFileEngine::QAbstractFileEngine(QAbstractFileEnginePrivate &dd) : d_ptr(&dd)
{
- d_ptr->q_ptr = this;
+ Q_ASSERT(d_ptr->q_ptr == this);
}
/*!
diff --git a/src/corelib/io/qabstractfileengine_p.h b/src/corelib/io/qabstractfileengine_p.h
index 5e6232af71a..704b0c94c55 100644
--- a/src/corelib/io/qabstractfileengine_p.h
+++ b/src/corelib/io/qabstractfileengine_p.h
@@ -242,8 +242,8 @@ private:
class QAbstractFileEnginePrivate
{
public:
- inline QAbstractFileEnginePrivate()
- : fileError(QFile::UnspecifiedError)
+ inline QAbstractFileEnginePrivate(QAbstractFileEngine *q)
+ : fileError(QFile::UnspecifiedError), q_ptr(q)
{
}
inline virtual ~QAbstractFileEnginePrivate() { }
@@ -251,7 +251,7 @@ public:
QFile::FileError fileError;
QString errorString;
- QAbstractFileEngine *q_ptr;
+ QAbstractFileEngine *const q_ptr;
Q_DECLARE_PUBLIC(QAbstractFileEngine)
};
diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp
index 2f9087bf6a3..6610b6ecd66 100644
--- a/src/corelib/io/qfsfileengine.cpp
+++ b/src/corelib/io/qfsfileengine.cpp
@@ -76,7 +76,8 @@ static_assert(sizeof(SignedIOType) == sizeof(UnsignedIOType),
*/
//**************** QFSFileEnginePrivate
-QFSFileEnginePrivate::QFSFileEnginePrivate() : QAbstractFileEnginePrivate()
+QFSFileEnginePrivate::QFSFileEnginePrivate(QAbstractFileEngine *q)
+ : QAbstractFileEnginePrivate(q)
{
init();
}
@@ -108,7 +109,7 @@ void QFSFileEnginePrivate::init()
Constructs a QFSFileEngine for the file name \a file.
*/
QFSFileEngine::QFSFileEngine(const QString &file)
- : QAbstractFileEngine(*new QFSFileEnginePrivate)
+ : QAbstractFileEngine(*new QFSFileEnginePrivate(this))
{
Q_D(QFSFileEngine);
d->fileEntry = QFileSystemEntry(file);
@@ -117,7 +118,7 @@ QFSFileEngine::QFSFileEngine(const QString &file)
/*!
Constructs a QFSFileEngine.
*/
-QFSFileEngine::QFSFileEngine() : QAbstractFileEngine(*new QFSFileEnginePrivate)
+QFSFileEngine::QFSFileEngine() : QAbstractFileEngine(*new QFSFileEnginePrivate(this))
{
}
diff --git a/src/corelib/io/qfsfileengine_p.h b/src/corelib/io/qfsfileengine_p.h
index 5e77804606a..f6b3a39e647 100644
--- a/src/corelib/io/qfsfileengine_p.h
+++ b/src/corelib/io/qfsfileengine_p.h
@@ -222,7 +222,7 @@ public:
return (openMode & QFile::WriteOnly) && !(openMode & QFile::ExistingOnly);
}
protected:
- QFSFileEnginePrivate();
+ QFSFileEnginePrivate(QAbstractFileEngine *q);
void init();
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index 83df4e1aec1..bd208896861 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -1397,6 +1397,9 @@ private:
// minimum size for which we'll try to re-open ourselves in mapUncompressed()
static constexpr qsizetype RemapCompressedThreshold = 16384;
protected:
+ QResourceFileEnginePrivate(QAbstractFileEngine *q) :
+ QAbstractFileEnginePrivate(q) {}
+
~QResourceFileEnginePrivate()
{
if (mustUnmap)
@@ -1410,7 +1413,7 @@ bool QResourceFileEngine::caseSensitive() const
}
QResourceFileEngine::QResourceFileEngine(const QString &file) :
- QAbstractFileEngine(*new QResourceFileEnginePrivate)
+ QAbstractFileEngine(*new QResourceFileEnginePrivate(this))
{
Q_D(QResourceFileEngine);
d->resource.setFileName(file);