summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/io/qfileinfo.cpp2
-rw-r--r--src/corelib/io/qfileinfo_p.h8
-rw-r--r--src/corelib/tools/qdatetime.h4
3 files changed, 13 insertions, 1 deletions
diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp
index 7fcb4154f2..addcd772ab 100644
--- a/src/corelib/io/qfileinfo.cpp
+++ b/src/corelib/io/qfileinfo.cpp
@@ -187,6 +187,8 @@ uint QFileInfoPrivate::getFileFlags(QAbstractFileEngine::FileFlags request) cons
QDateTime &QFileInfoPrivate::getFileTime(QAbstractFileEngine::FileTime request) const
{
Q_ASSERT(fileEngine); // should never be called when using the native FS
+ if (fileTimes.size() != 3)
+ fileTimes.resize(3);
if (!cache_enabled)
clearFlags();
uint cf;
diff --git a/src/corelib/io/qfileinfo_p.h b/src/corelib/io/qfileinfo_p.h
index 1b254f6e85..442e6b5ef0 100644
--- a/src/corelib/io/qfileinfo_p.h
+++ b/src/corelib/io/qfileinfo_p.h
@@ -58,6 +58,7 @@
#include "qatomic.h"
#include "qshareddata.h"
#include "qfilesystemengine_p.h"
+#include "qvector.h"
#include <QtCore/private/qabstractfileengine_p.h>
#include <QtCore/private/qfilesystementry_p.h>
@@ -152,7 +153,12 @@ public:
bool cache_enabled : 1;
mutable uint fileFlags;
mutable qint64 fileSize;
- mutable QDateTime fileTimes[3];
+ // ### Qt6: FIXME: This vector is essentially a plain array
+ // mutable QDateTime fileTimes[3], but the array is slower
+ // to initialize than the QVector as QDateTime has a pimpl.
+ // In Qt 6, QDateTime should inline its data members,
+ // and this here can be an array again.
+ mutable QVector<QDateTime> fileTimes;
inline bool getCachedFlag(uint c) const
{ return cache_enabled ? (cachedFlags & c) : 0; }
inline void setCachedFlag(uint c) const
diff --git a/src/corelib/tools/qdatetime.h b/src/corelib/tools/qdatetime.h
index d1cc10c877..5c1668033c 100644
--- a/src/corelib/tools/qdatetime.h
+++ b/src/corelib/tools/qdatetime.h
@@ -262,6 +262,10 @@ public:
private:
friend class QDateTimePrivate;
void detach();
+
+ // ### Qt6: Using a private here has high impact on runtime
+ // on users such as QFileInfo. In Qt 6, the data members
+ // should be inlined.
QExplicitlySharedDataPointer<QDateTimePrivate> d;
#ifndef QT_NO_DATASTREAM