diff options
Diffstat (limited to 'src/corelib/io')
-rw-r--r-- | src/corelib/io/qdatastream.h | 8 | ||||
-rw-r--r-- | src/corelib/io/qfiledevice.cpp | 3 | ||||
-rw-r--r-- | src/corelib/io/qloggingregistry.cpp | 7 | ||||
-rw-r--r-- | src/corelib/io/qsettings_mac.cpp | 4 |
4 files changed, 20 insertions, 2 deletions
diff --git a/src/corelib/io/qdatastream.h b/src/corelib/io/qdatastream.h index 31507fdf73..993a20fcd3 100644 --- a/src/corelib/io/qdatastream.h +++ b/src/corelib/io/qdatastream.h @@ -360,6 +360,14 @@ inline QDataStream &QDataStream::operator<<(quint32 i) inline QDataStream &QDataStream::operator<<(quint64 i) { return *this << qint64(i); } +template <typename Enum> +inline QDataStream &operator<<(QDataStream &s, QFlags<Enum> e) +{ return s << e.i; } + +template <typename Enum> +inline QDataStream &operator>>(QDataStream &s, QFlags<Enum> &e) +{ return s >> e.i; } + template <typename T> inline QDataStream &operator>>(QDataStream &s, QList<T> &l) { diff --git a/src/corelib/io/qfiledevice.cpp b/src/corelib/io/qfiledevice.cpp index 20cfa5bdaf..ce9c8275ce 100644 --- a/src/corelib/io/qfiledevice.cpp +++ b/src/corelib/io/qfiledevice.cpp @@ -328,6 +328,9 @@ void QFileDevice::close() d->lastWasWrite = false; d->writeBuffer.clear(); + // reset cached size + d->cachedSize = 0; + // keep earlier error from flush if (d->fileEngine->close() && flushed) unsetError(); diff --git a/src/corelib/io/qloggingregistry.cpp b/src/corelib/io/qloggingregistry.cpp index eaebbc1ffc..b8d1919ee6 100644 --- a/src/corelib/io/qloggingregistry.cpp +++ b/src/corelib/io/qloggingregistry.cpp @@ -365,7 +365,12 @@ void QLoggingRegistry::setApiRules(const QString &content) */ void QLoggingRegistry::updateRules() { - rules = qtConfigRules + configRules + apiRules + envRules; + rules.clear(); + rules.reserve(qtConfigRules.size() + configRules.size() + apiRules.size() + envRules.size()), + rules += qtConfigRules; + rules += configRules; + rules += apiRules; + rules += envRules; for (auto it = categories.keyBegin(), end = categories.keyEnd(); it != end; ++it) (*categoryFilter)(*it); diff --git a/src/corelib/io/qsettings_mac.cpp b/src/corelib/io/qsettings_mac.cpp index dcaefd1613..e4631bad12 100644 --- a/src/corelib/io/qsettings_mac.cpp +++ b/src/corelib/io/qsettings_mac.cpp @@ -269,8 +269,10 @@ static QVariant qtValue(CFPropertyListRef cfvalue) // Fast-path for QByteArray, so that we don't have to go // though the expensive and lossy conversion via UTF-8. - if (!byteArray.startsWith('@')) + if (!byteArray.startsWith('@')) { + byteArray.detach(); return byteArray; + } const QString str = QString::fromUtf8(byteArray.constData(), byteArray.size()); return QSettingsPrivate::stringToVariant(str); |