QAFileEngine: let Private take charge of setting its own q_ptr
The QAFE was always setting the q_ptr of the Private just after it was constructed, but it wasn't immediately obvious the QAFE(Private &) constructor wasn't stealing its d_ptr of some other QAFE by overwriting the q_ptr. Passing the file engine's this to the Private's constructor makes it all unambiguous and incidentally makes it possible to make clear that q_ptr is in fact const. Fixes a static analyzer's grumble about Private's constructor not setting q_ptr. Task-number: QTBUG-122619 Change-Id: Id532bbe628651ad691b7c4b058e01c5cc2e6e241 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
This commit is contained in:
parent
3ab18f4021
commit
7551482205
@ -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);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -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)
|
||||
};
|
||||
|
||||
|
@ -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))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -222,7 +222,7 @@ public:
|
||||
return (openMode & QFile::WriteOnly) && !(openMode & QFile::ExistingOnly);
|
||||
}
|
||||
protected:
|
||||
QFSFileEnginePrivate();
|
||||
QFSFileEnginePrivate(QAbstractFileEngine *q);
|
||||
|
||||
void init();
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user