summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/doc/src/cpp20-overview.qdoc10
-rw-r--r--src/corelib/itemmodels/qrangemodel.cpp103
-rw-r--r--src/corelib/itemmodels/qrangemodel.h20
-rw-r--r--src/corelib/itemmodels/qrangemodel_impl.h39
-rw-r--r--src/corelib/platform/windows/qcomobject_p.h18
-rw-r--r--src/corelib/serialization/qtextstream.cpp15
-rw-r--r--src/corelib/serialization/qtextstream_p.h8
-rw-r--r--src/dbus/dbus_minimal_p.h1
-rw-r--r--src/dbus/qdbus_symbols_p.h1
-rw-r--r--src/dbus/qdbusabstractadaptor.cpp1
-rw-r--r--src/dbus/qdbusabstractadaptor.h1
-rw-r--r--src/dbus/qdbusabstractadaptor_p.h1
-rw-r--r--src/dbus/qdbusabstractinterface.cpp1
-rw-r--r--src/dbus/qdbusabstractinterface.h1
-rw-r--r--src/dbus/qdbusabstractinterface_p.h1
-rw-r--r--src/dbus/qdbusargument.h42
-rw-r--r--src/dbus/qdbusargument_p.h1
-rw-r--r--src/dbus/qdbusconnection.cpp1
-rw-r--r--src/dbus/qdbusconnection.h1
-rw-r--r--src/dbus/qdbusconnection_p.h1
-rw-r--r--src/dbus/qdbusconnectioninterface.cpp1
-rw-r--r--src/dbus/qdbusconnectioninterface.h1
-rw-r--r--src/dbus/qdbusconnectionmanager.cpp5
-rw-r--r--src/dbus/qdbusconnectionmanager_p.h1
-rw-r--r--src/dbus/qdbuscontext.cpp1
-rw-r--r--src/dbus/qdbuscontext.h1
-rw-r--r--src/dbus/qdbuscontext_p.h1
-rw-r--r--src/dbus/qdbuserror.cpp1
-rw-r--r--src/dbus/qdbuserror.h1
-rw-r--r--src/dbus/qdbusextratypes.cpp1
-rw-r--r--src/dbus/qdbusextratypes.h1
-rw-r--r--src/dbus/qdbusintegrator.cpp1
-rw-r--r--src/dbus/qdbusintegrator_p.h1
-rw-r--r--src/dbus/qdbusinterface.cpp1
-rw-r--r--src/dbus/qdbusinterface.h1
-rw-r--r--src/dbus/qdbusinterface_p.h1
-rw-r--r--src/dbus/qdbusinternalfilters.cpp1
-rw-r--r--src/dbus/qdbusintrospection.cpp1
-rw-r--r--src/dbus/qdbusintrospection_p.h1
-rw-r--r--src/dbus/qdbusmessage.cpp1
-rw-r--r--src/dbus/qdbusmessage.h1
-rw-r--r--src/dbus/qdbusmessage_p.h1
-rw-r--r--src/dbus/qdbusmetaobject.cpp1
-rw-r--r--src/dbus/qdbusmetaobject_p.h1
-rw-r--r--src/dbus/qdbusmetatype.cpp1
-rw-r--r--src/dbus/qdbusmetatype.h1
-rw-r--r--src/dbus/qdbusmetatype_p.h1
-rw-r--r--src/dbus/qdbusmisc.cpp1
-rw-r--r--src/dbus/qdbuspendingcall.cpp3
-rw-r--r--src/dbus/qdbuspendingcall.h1
-rw-r--r--src/dbus/qdbuspendingcall_p.h1
-rw-r--r--src/dbus/qdbuspendingreply.cpp1
-rw-r--r--src/dbus/qdbuspendingreply.h1
-rw-r--r--src/dbus/qdbusreply.cpp1
-rw-r--r--src/dbus/qdbusreply.h1
-rw-r--r--src/dbus/qdbusserver.cpp1
-rw-r--r--src/dbus/qdbusserver.h1
-rw-r--r--src/dbus/qdbusservicewatcher.cpp1
-rw-r--r--src/dbus/qdbusservicewatcher.h1
-rw-r--r--src/dbus/qdbusthreaddebug_p.h1
-rw-r--r--src/dbus/qdbusunixfiledescriptor.cpp1
-rw-r--r--src/dbus/qdbusunixfiledescriptor.h1
-rw-r--r--src/dbus/qdbusutil.cpp1
-rw-r--r--src/dbus/qdbusutil_p.h1
-rw-r--r--src/dbus/qdbusvirtualobject.cpp1
-rw-r--r--src/dbus/qdbusvirtualobject.h1
-rw-r--r--src/dbus/qdbusxmlgenerator.cpp1
-rw-r--r--src/dbus/qdbusxmlparser.cpp1
-rw-r--r--src/dbus/qdbusxmlparser_p.h1
-rw-r--r--src/dbus/qtdbusglobal.h1
-rw-r--r--src/dbus/qtdbusglobal_p.h1
-rw-r--r--src/gui/math3d/qmatrix4x4.cpp2
-rw-r--r--src/gui/math3d/qmatrix4x4.h4
-rw-r--r--src/network/access/qhttp2connection.cpp13
-rw-r--r--src/plugins/styles/modernwindows/qwindows11style.cpp3
-rw-r--r--src/testlib/3rdparty/catch2/qt_attribution.json1
-rw-r--r--tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp9
-rw-r--r--tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp18
-rw-r--r--tests/auto/corelib/text/qlocale/tst_qlocale.cpp16
-rw-r--r--tests/auto/dbus/qdbusconnection/CMakeLists.txt12
-rw-r--r--tests/auto/dbus/qdbusconnection/qdbusdelayeddeliveryreenablehelper.cpp56
-rw-r--r--tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp30
-rw-r--r--tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h2
83 files changed, 369 insertions, 121 deletions
diff --git a/src/corelib/doc/src/cpp20-overview.qdoc b/src/corelib/doc/src/cpp20-overview.qdoc
index ed48e10f94a..1231394c161 100644
--- a/src/corelib/doc/src/cpp20-overview.qdoc
+++ b/src/corelib/doc/src/cpp20-overview.qdoc
@@ -12,6 +12,16 @@
This page gives a brief overview of C++20 features available in Qt.
+ \section1 WebEngine and Module-Specific Requirements
+
+ While Qt 6 only requires a C++17-compatible compiler in general,
+ the \l{Qt WebEngine} module requires a C++20-compatible compiler
+ due to its dependencies (such as Chromium).
+
+ If you are building Qt WebEngine, ensure that your compiler fully supports C++20.
+
+ See \l{qtwebengine-platform-notes.html}{Qt WebEngine Platform Notes} for detailed requirements.
+
\section1 Support for \c{std::chrono}
Various classes related to date and time have support for \l
diff --git a/src/corelib/itemmodels/qrangemodel.cpp b/src/corelib/itemmodels/qrangemodel.cpp
index 51043eb0e24..8ced35a4ae0 100644
--- a/src/corelib/itemmodels/qrangemodel.cpp
+++ b/src/corelib/itemmodels/qrangemodel.cpp
@@ -5,8 +5,48 @@
#include "qrangemodel.h"
#include <QtCore/qsize.h>
+#include <QtCore/private/qabstractitemmodel_p.h>
+
QT_BEGIN_NAMESPACE
+class QRangeModelPrivate : QAbstractItemModelPrivate
+{
+ Q_DECLARE_PUBLIC(QRangeModel)
+
+ struct Deleter { void operator()(QRangeModelImplBase *that) { that->destroy(); } };
+
+public:
+ explicit QRangeModelPrivate(std::unique_ptr<QRangeModelImplBase, Deleter> impl)
+ : impl(std::move(impl))
+ {}
+
+ template <typename Ret, typename ...Args>
+ Ret call(QRangeModelImplBase::ConstOp op, const Args &...args) const
+ {
+ Ret ret = {};
+ const auto tuple = std::tie(args...);
+ impl->callConst_fn(op, impl.get(), &ret, &tuple);
+ return ret;
+ }
+
+ template <typename Ret, typename ...Args>
+ Ret call(QRangeModelImplBase::Op op, const Args &...args)
+ {
+ Ret ret = {};
+ const auto tuple = std::tie(args...);
+ impl->call_fn(op, impl.get(), &ret, &tuple);
+ return ret;
+ }
+
+private:
+ std::unique_ptr<QRangeModelImplBase, Deleter> impl;
+};
+
+QRangeModel::QRangeModel(QRangeModelImplBase *impl, QObject *parent)
+ : QAbstractItemModel(*new QRangeModelPrivate({impl, {}}), parent)
+{
+}
+
/*!
\class QRangeModel
\inmodule QtCore
@@ -503,7 +543,8 @@ QRangeModel::~QRangeModel() = default;
*/
QModelIndex QRangeModel::index(int row, int column, const QModelIndex &parent) const
{
- return impl->callConst<QModelIndex>(QRangeModelImplBase::Index, row, column, parent);
+ Q_D(const QRangeModel);
+ return d->call<QModelIndex>(QRangeModelImplBase::Index, row, column, parent);
}
/*!
@@ -520,7 +561,8 @@ QModelIndex QRangeModel::index(int row, int column, const QModelIndex &parent) c
*/
QModelIndex QRangeModel::parent(const QModelIndex &child) const
{
- return impl->callConst<QModelIndex>(QRangeModelImplBase::Parent, child);
+ Q_D(const QRangeModel);
+ return d->call<QModelIndex>(QRangeModelImplBase::Parent, child);
}
/*!
@@ -536,7 +578,8 @@ QModelIndex QRangeModel::parent(const QModelIndex &child) const
*/
QModelIndex QRangeModel::sibling(int row, int column, const QModelIndex &index) const
{
- return impl->callConst<QModelIndex>(QRangeModelImplBase::Sibling, row, column, index);
+ Q_D(const QRangeModel);
+ return d->call<QModelIndex>(QRangeModelImplBase::Sibling, row, column, index);
}
/*!
@@ -554,7 +597,8 @@ QModelIndex QRangeModel::sibling(int row, int column, const QModelIndex &index)
*/
int QRangeModel::rowCount(const QModelIndex &parent) const
{
- return impl->callConst<int>(QRangeModelImplBase::RowCount, parent);
+ Q_D(const QRangeModel);
+ return d->call<int>(QRangeModelImplBase::RowCount, parent);
}
/*!
@@ -572,7 +616,8 @@ int QRangeModel::rowCount(const QModelIndex &parent) const
*/
int QRangeModel::columnCount(const QModelIndex &parent) const
{
- return impl->callConst<int>(QRangeModelImplBase::ColumnCount, parent);
+ Q_D(const QRangeModel);
+ return d->call<int>(QRangeModelImplBase::ColumnCount, parent);
}
/*!
@@ -589,7 +634,8 @@ int QRangeModel::columnCount(const QModelIndex &parent) const
*/
Qt::ItemFlags QRangeModel::flags(const QModelIndex &index) const
{
- return impl->callConst<Qt::ItemFlags>(QRangeModelImplBase::Flags, index);
+ Q_D(const QRangeModel);
+ return d->call<Qt::ItemFlags>(QRangeModelImplBase::Flags, index);
}
/*!
@@ -606,8 +652,8 @@ Qt::ItemFlags QRangeModel::flags(const QModelIndex &index) const
*/
QVariant QRangeModel::headerData(int section, Qt::Orientation orientation, int role) const
{
- return impl->callConst<QVariant>(QRangeModelImplBase::HeaderData,
- section, orientation, role);
+ Q_D(const QRangeModel);
+ return d->call<QVariant>(QRangeModelImplBase::HeaderData, section, orientation, role);
}
/*!
@@ -629,7 +675,8 @@ QVariant QRangeModel::headerData(int section, Qt::Orientation orientation, int r
*/
QVariant QRangeModel::data(const QModelIndex &index, int role) const
{
- return impl->callConst<QVariant>(QRangeModelImplBase::Data, index, role);
+ Q_D(const QRangeModel);
+ return d->call<QVariant>(QRangeModelImplBase::Data, index, role);
}
/*!
@@ -654,7 +701,8 @@ QVariant QRangeModel::data(const QModelIndex &index, int role) const
*/
bool QRangeModel::setData(const QModelIndex &index, const QVariant &data, int role)
{
- return impl->call<bool>(QRangeModelImplBase::SetData, index, data, role);
+ Q_D(QRangeModel);
+ return d->call<bool>(QRangeModelImplBase::SetData, index, data, role);
}
/*!
@@ -677,7 +725,8 @@ bool QRangeModel::setData(const QModelIndex &index, const QVariant &data, int ro
*/
QMap<int, QVariant> QRangeModel::itemData(const QModelIndex &index) const
{
- return impl->callConst<QMap<int, QVariant>>(QRangeModelImplBase::ItemData, index);
+ Q_D(const QRangeModel);
+ return d->call<QMap<int, QVariant>>(QRangeModelImplBase::ItemData, index);
}
/*!
@@ -708,7 +757,8 @@ QMap<int, QVariant> QRangeModel::itemData(const QModelIndex &index) const
*/
bool QRangeModel::setItemData(const QModelIndex &index, const QMap<int, QVariant> &data)
{
- return impl->call<bool>(QRangeModelImplBase::SetItemData, index, data);
+ Q_D(QRangeModel);
+ return d->call<bool>(QRangeModelImplBase::SetItemData, index, data);
}
/*!
@@ -721,7 +771,8 @@ bool QRangeModel::setItemData(const QModelIndex &index, const QMap<int, QVariant
*/
bool QRangeModel::clearItemData(const QModelIndex &index)
{
- return impl->call<bool>(QRangeModelImplBase::ClearItemData, index);
+ Q_D(QRangeModel);
+ return d->call<bool>(QRangeModelImplBase::ClearItemData, index);
}
/*
@@ -746,7 +797,8 @@ bool QRangeModel::clearItemData(const QModelIndex &index)
*/
bool QRangeModel::insertColumns(int column, int count, const QModelIndex &parent)
{
- return impl->call<bool>(QRangeModelImplBase::InsertColumns, column, count, parent);
+ Q_D(QRangeModel);
+ return d->call<bool>(QRangeModelImplBase::InsertColumns, column, count, parent);
}
/*!
@@ -760,7 +812,8 @@ bool QRangeModel::insertColumns(int column, int count, const QModelIndex &parent
*/
bool QRangeModel::removeColumns(int column, int count, const QModelIndex &parent)
{
- return impl->call<bool>(QRangeModelImplBase::RemoveColumns, column, count, parent);
+ Q_D(QRangeModel);
+ return d->call<bool>(QRangeModelImplBase::RemoveColumns, column, count, parent);
}
/*!
@@ -775,9 +828,10 @@ bool QRangeModel::removeColumns(int column, int count, const QModelIndex &parent
bool QRangeModel::moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count,
const QModelIndex &destinationParent, int destinationColumn)
{
- return impl->call<bool>(QRangeModelImplBase::MoveColumns,
- sourceParent, sourceColumn, count,
- destinationParent, destinationColumn);
+ Q_D(QRangeModel);
+ return d->call<bool>(QRangeModelImplBase::MoveColumns,
+ sourceParent, sourceColumn, count,
+ destinationParent, destinationColumn);
}
/*
@@ -804,7 +858,8 @@ bool QRangeModel::moveColumns(const QModelIndex &sourceParent, int sourceColumn,
*/
bool QRangeModel::insertRows(int row, int count, const QModelIndex &parent)
{
- return impl->call<bool>(QRangeModelImplBase::InsertRows, row, count, parent);
+ Q_D(QRangeModel);
+ return d->call<bool>(QRangeModelImplBase::InsertRows, row, count, parent);
}
/*!
@@ -817,7 +872,8 @@ bool QRangeModel::insertRows(int row, int count, const QModelIndex &parent)
*/
bool QRangeModel::removeRows(int row, int count, const QModelIndex &parent)
{
- return impl->call<bool>(QRangeModelImplBase::RemoveRows, row, count, parent);
+ Q_D(QRangeModel);
+ return d->call<bool>(QRangeModelImplBase::RemoveRows, row, count, parent);
}
/*!
@@ -832,9 +888,10 @@ bool QRangeModel::removeRows(int row, int count, const QModelIndex &parent)
bool QRangeModel::moveRows(const QModelIndex &sourceParent, int sourceRow, int count,
const QModelIndex &destinationParent, int destinationRow)
{
- return impl->call<bool>(QRangeModelImplBase::MoveRows,
- sourceParent, sourceRow, count,
- destinationParent, destinationRow);
+ Q_D(QRangeModel);
+ return d->call<bool>(QRangeModelImplBase::MoveRows,
+ sourceParent, sourceRow, count,
+ destinationParent, destinationRow);
}
/*!
diff --git a/src/corelib/itemmodels/qrangemodel.h b/src/corelib/itemmodels/qrangemodel.h
index 328966f26fd..0d9add5def3 100644
--- a/src/corelib/itemmodels/qrangemodel.h
+++ b/src/corelib/itemmodels/qrangemodel.h
@@ -9,6 +9,8 @@
QT_BEGIN_NAMESPACE
+class QRangeModelPrivate;
+
class Q_CORE_EXPORT QRangeModel : public QAbstractItemModel
{
Q_OBJECT
@@ -103,10 +105,10 @@ protected:
private:
Q_DISABLE_COPY_MOVE(QRangeModel)
+ Q_DECLARE_PRIVATE(QRangeModel)
+ explicit QRangeModel(QRangeModelImplBase *impl, QObject *parent);
friend class QRangeModelImplBase;
- struct Deleter { void operator()(QRangeModelImplBase *that) { that->destroy(); } };
- std::unique_ptr<QRangeModelImplBase, Deleter> impl;
};
// implementation of forwarders
@@ -193,21 +195,21 @@ const QAbstractItemModel &QRangeModelImplBase::itemModel() const
template <typename Range, QRangeModelDetails::if_table_range<Range>>
QRangeModel::QRangeModel(Range &&range, QObject *parent)
- : QAbstractItemModel(parent)
- , impl(new QGenericTableItemModelImpl<Range>(std::forward<Range>(range), this))
+ : QRangeModel(new QGenericTableItemModelImpl<Range>(std::forward<Range>(range), this), parent)
{}
template <typename Range, QRangeModelDetails::if_tree_range<Range>>
QRangeModel::QRangeModel(Range &&range, QObject *parent)
- : QRangeModel(std::forward<Range>(range),
- QRangeModelDetails::DefaultTreeProtocol<Range>{}, parent)
+ : QRangeModel(std::forward<Range>(range), QRangeModelDetails::DefaultTreeProtocol<Range>{},
+ parent)
{}
template <typename Range, typename Protocol, QRangeModelDetails::if_tree_range<Range, Protocol>>
QRangeModel::QRangeModel(Range &&range, Protocol &&protocol, QObject *parent)
- : QAbstractItemModel(parent)
- , impl(new QGenericTreeItemModelImpl<Range, Protocol>(std::forward<Range>(range),
- std::forward<Protocol>(protocol), this))
+ : QRangeModel(new QGenericTreeItemModelImpl<Range, Protocol>(std::forward<Range>(range),
+ std::forward<Protocol>(protocol),
+ this),
+ parent)
{}
QT_END_NAMESPACE
diff --git a/src/corelib/itemmodels/qrangemodel_impl.h b/src/corelib/itemmodels/qrangemodel_impl.h
index 38378fdcc64..34c9ba235a6 100644
--- a/src/corelib/itemmodels/qrangemodel_impl.h
+++ b/src/corelib/itemmodels/qrangemodel_impl.h
@@ -604,7 +604,7 @@ public:
void destroy()
{
- call<bool>(Destroy);
+ call_fn(Destroy, this, nullptr, nullptr);
}
private:
@@ -615,6 +615,7 @@ private:
using CallConstFN = decltype(callConst);
using CallTupleFN = decltype(call);
+ friend class QRangeModelPrivate;
CallConstFN *callConst_fn;
CallTupleFN *call_fn;
QRangeModel *m_rangeModel;
@@ -647,25 +648,6 @@ protected:
inline void endMoveRows();
inline QAbstractItemModel &itemModel();
inline const QAbstractItemModel &itemModel() const;
-
-public:
- template <typename Ret, typename ...Args>
- Ret callConst(ConstOp op, const Args &...args) const
- {
- Ret ret = {};
- const auto tuple = std::tie(args...);
- callConst_fn(op, this, &ret, &tuple);
- return ret;
- }
-
- template <typename Ret, typename ...Args>
- Ret call(Op op, const Args &...args)
- {
- Ret ret = {};
- const auto tuple = std::tie(args...);
- call_fn(op, this, &ret, &tuple);
- return ret;
- }
};
template <typename Structure, typename Range,
@@ -1357,7 +1339,7 @@ public:
bool removeRows(int row, int count, const QModelIndex &parent = {})
{
- if constexpr (Structure::canRemoveRows()) {
+ if constexpr (canRemoveRows()) {
const int prevRowCount = that().rowCount(parent);
if (row < 0 || row + count > prevRowCount)
return false;
@@ -1476,10 +1458,15 @@ protected:
// row elements.
return false;
} else {
- return Structure::canInsertRows();
+ return Structure::canInsertRowsImpl();
}
}
+ static constexpr bool canRemoveRows()
+ {
+ return Structure::canRemoveRowsImpl();
+ }
+
template <typename F>
bool writeAt(const QModelIndex &index, F&& writer)
{
@@ -1805,7 +1792,7 @@ protected:
return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
}
- static constexpr bool canInsertRows()
+ static constexpr bool canInsertRowsImpl()
{
// We must not insert rows if we cannot adjust the parents of the
// children of the following rows. We don't have to do that if the
@@ -1814,7 +1801,7 @@ protected:
&& Base::dynamicRows() && range_features::has_insert;
}
- static constexpr bool canRemoveRows()
+ static constexpr bool canRemoveRowsImpl()
{
// We must not remove rows if we cannot adjust the parents of the
// children of the following rows. We don't have to do that if the
@@ -2090,12 +2077,12 @@ protected:
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemNeverHasChildren;
}
- static constexpr bool canInsertRows()
+ static constexpr bool canInsertRowsImpl()
{
return Base::dynamicRows() && range_features::has_insert;
}
- static constexpr bool canRemoveRows()
+ static constexpr bool canRemoveRowsImpl()
{
return Base::dynamicRows() && range_features::has_erase;
}
diff --git a/src/corelib/platform/windows/qcomobject_p.h b/src/corelib/platform/windows/qcomobject_p.h
index bbf7796445d..bd6f81d1c28 100644
--- a/src/corelib/platform/windows/qcomobject_p.h
+++ b/src/corelib/platform/windows/qcomobject_p.h
@@ -80,18 +80,21 @@ public:
return tryQueryInterface<TFirstInterface, TAdditionalInterfaces...>(riid, ppvObject);
}
- // clang-format off
STDMETHODIMP_(ULONG) AddRef() override
{
- return ++m_referenceCount;
+ return m_referenceCount.fetch_add(1, std::memory_order_relaxed) + 1;
}
- // clang-format on
STDMETHODIMP_(ULONG) Release() override
{
- const LONG referenceCount = --m_referenceCount;
- if (referenceCount == 0)
+ const LONG referenceCount = m_referenceCount.fetch_sub(1, std::memory_order_release) - 1;
+ if (referenceCount == 0) {
+ // This acquire fence synchronizes with the release operation in other threads.
+ // It ensures that all memory writes made to this object by other threads
+ // are visible to this thread before we proceed to delete it.
+ std::atomic_thread_fence(std::memory_order_acquire);
delete this;
+ }
return referenceCount;
}
@@ -103,6 +106,9 @@ protected:
// Derived class should make its destructor private to force this behavior.
virtual ~QComObject() = default;
+ // allow derived classes to access the reference count
+ std::atomic<LONG> m_referenceCount = 1;
+
private:
template <typename TInterface, typename... TRest>
HRESULT tryQueryInterface(REFIID riid, void **ppvObject)
@@ -121,8 +127,6 @@ private:
return E_NOINTERFACE;
}
-
- std::atomic<LONG> m_referenceCount = 1;
};
QT_END_NAMESPACE
diff --git a/src/corelib/serialization/qtextstream.cpp b/src/corelib/serialization/qtextstream.cpp
index e4dc98af98b..8226be3d219 100644
--- a/src/corelib/serialization/qtextstream.cpp
+++ b/src/corelib/serialization/qtextstream.cpp
@@ -833,29 +833,28 @@ QTextStreamPrivate::PaddingResult QTextStreamPrivate::padding(qsizetype len) con
/*!
\internal
*/
-void QTextStreamPrivate::putString(const QChar *data, qsizetype len, bool number)
+void QTextStreamPrivate::putString(QStringView data, bool number)
{
- if (Q_UNLIKELY(params.fieldWidth > len)) {
+ if (Q_UNLIKELY(params.fieldWidth > data.size())) {
// handle padding:
- const PaddingResult pad = padding(len);
+ const PaddingResult pad = padding(data.size());
if (params.fieldAlignment == QTextStream::AlignAccountingStyle && number) {
- const QChar sign = len > 0 ? data[0] : QChar();
+ const QChar sign = data.size() > 0 ? data.front() : QChar();
if (sign == locale.negativeSign() || sign == locale.positiveSign()) {
// write the sign before the padding, then skip it later
write(sign);
- ++data;
- --len;
+ data = data.sliced(1);
}
}
writePadding(pad.left);
- write(data, len);
+ write(data);
writePadding(pad.right);
} else {
- write(data, len);
+ write(data);
}
}
diff --git a/src/corelib/serialization/qtextstream_p.h b/src/corelib/serialization/qtextstream_p.h
index bf3ce7b2ef7..6d6bfcd8365 100644
--- a/src/corelib/serialization/qtextstream_p.h
+++ b/src/corelib/serialization/qtextstream_p.h
@@ -149,11 +149,9 @@ public:
void write(const QChar *data, qsizetype len);
void write(QLatin1StringView data);
void writePadding(qsizetype len);
- inline void putString(QStringView string, bool number = false)
- {
- putString(string.constData(), string.size(), number);
- }
- void putString(const QChar *data, qsizetype len, bool number = false);
+ void putString(QStringView string, bool number = false);
+ void putString(const QChar *data, qsizetype len, bool number = false)
+ { putString(QStringView{data, len}, number); }
void putString(QLatin1StringView data, bool number = false);
void putString(QUtf8StringView data, bool number = false);
inline void putChar(QChar ch);
diff --git a/src/dbus/dbus_minimal_p.h b/src/dbus/dbus_minimal_p.h
index 36e7fab55d9..a87c07defcb 100644
--- a/src/dbus/dbus_minimal_p.h
+++ b/src/dbus/dbus_minimal_p.h
@@ -2,6 +2,7 @@
// Copyright (C) 2002, 2003, 2004, 2005 Red Hat, Inc.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: AFL-2.1 OR GPL-2.0-or-later
+// Qt-Security score:significant reason:default
#ifndef DBUS_MINIMAL_P_H
#define DBUS_MINIMAL_P_H
diff --git a/src/dbus/qdbus_symbols_p.h b/src/dbus/qdbus_symbols_p.h
index 78b7e049ef3..a3e3b202c12 100644
--- a/src/dbus/qdbus_symbols_p.h
+++ b/src/dbus/qdbus_symbols_p.h
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
//
// W A R N I N G
diff --git a/src/dbus/qdbusabstractadaptor.cpp b/src/dbus/qdbusabstractadaptor.cpp
index df83cc6f462..b9c87797846 100644
--- a/src/dbus/qdbusabstractadaptor.cpp
+++ b/src/dbus/qdbusabstractadaptor.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusabstractadaptor.h"
#include "qdbusabstractadaptor_p.h"
diff --git a/src/dbus/qdbusabstractadaptor.h b/src/dbus/qdbusabstractadaptor.h
index f143056b43a..649dc4622d0 100644
--- a/src/dbus/qdbusabstractadaptor.h
+++ b/src/dbus/qdbusabstractadaptor.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSABSTRACTADAPTOR_H
#define QDBUSABSTRACTADAPTOR_H
diff --git a/src/dbus/qdbusabstractadaptor_p.h b/src/dbus/qdbusabstractadaptor_p.h
index c047af18211..51dc727b2fb 100644
--- a/src/dbus/qdbusabstractadaptor_p.h
+++ b/src/dbus/qdbusabstractadaptor_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
//
// W A R N I N G
diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp
index 0c6dbf1b3b7..4e46fc8f743 100644
--- a/src/dbus/qdbusabstractinterface.cpp
+++ b/src/dbus/qdbusabstractinterface.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusabstractinterface.h"
#include "qdbusabstractinterface_p.h"
diff --git a/src/dbus/qdbusabstractinterface.h b/src/dbus/qdbusabstractinterface.h
index 8d36fb37281..2bdbdc419db 100644
--- a/src/dbus/qdbusabstractinterface.h
+++ b/src/dbus/qdbusabstractinterface.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSABSTRACTINTERFACE_H
#define QDBUSABSTRACTINTERFACE_H
diff --git a/src/dbus/qdbusabstractinterface_p.h b/src/dbus/qdbusabstractinterface_p.h
index 1bd5e96f2d4..aca8ed23253 100644
--- a/src/dbus/qdbusabstractinterface_p.h
+++ b/src/dbus/qdbusabstractinterface_p.h
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
//
// W A R N I N G
diff --git a/src/dbus/qdbusargument.h b/src/dbus/qdbusargument.h
index f04cbc1ed43..b79f675a9e4 100644
--- a/src/dbus/qdbusargument.h
+++ b/src/dbus/qdbusargument.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSARGUMENT_H
#define QDBUSARGUMENT_H
@@ -119,6 +120,27 @@ protected:
QDBusArgument(QDBusArgumentPrivate *d);
friend class QDBusArgumentPrivate;
mutable QDBusArgumentPrivate *d;
+
+private:
+ template <typename... T>
+ friend QDBusArgument &operator<<(QDBusArgument &argument, const std::tuple<T...> &tuple)
+ {
+ static_assert(sizeof...(T) != 0, "D-Bus doesn't allow empty structs");
+ argument.beginStructure();
+ std::apply([&argument](const auto &...elements) { (argument << ... << elements); }, tuple);
+ argument.endStructure();
+ return argument;
+ }
+
+ template <typename... T>
+ friend const QDBusArgument &operator>>(const QDBusArgument &argument, std::tuple<T...> &tuple)
+ {
+ static_assert(sizeof...(T) != 0, "D-Bus doesn't allow empty structs");
+ argument.beginStructure();
+ std::apply([&argument](auto &...elements) { (argument >> ... >> elements); }, tuple);
+ argument.endStructure();
+ return argument;
+ }
};
Q_DECLARE_SHARED(QDBusArgument)
@@ -323,26 +345,6 @@ inline const QDBusArgument &operator>>(const QDBusArgument &arg, std::pair<T1, T
return arg;
}
-template <typename... T>
-QDBusArgument &operator<<(QDBusArgument &argument, const std::tuple<T...> &tuple)
-{
- static_assert(sizeof...(T) != 0, "D-Bus doesn't allow empty structs");
- argument.beginStructure();
- std::apply([&argument](const auto &...elements) { (argument << ... << elements); }, tuple);
- argument.endStructure();
- return argument;
-}
-
-template <typename... T>
-const QDBusArgument &operator>>(const QDBusArgument &argument, std::tuple<T...> &tuple)
-{
- static_assert(sizeof...(T) != 0, "D-Bus doesn't allow empty structs");
- argument.beginStructure();
- std::apply([&argument](auto &...elements) { (argument >> ... >> elements); }, tuple);
- argument.endStructure();
- return argument;
-}
-
QT_END_NAMESPACE
#endif // QT_NO_DBUS
diff --git a/src/dbus/qdbusargument_p.h b/src/dbus/qdbusargument_p.h
index d9a73827424..3d007ea2c7c 100644
--- a/src/dbus/qdbusargument_p.h
+++ b/src/dbus/qdbusargument_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSARGUMENT_P_H
#define QDBUSARGUMENT_P_H
diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp
index 08cec30afa3..aa2ba432fa5 100644
--- a/src/dbus/qdbusconnection.cpp
+++ b/src/dbus/qdbusconnection.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusconnection.h"
#include "qdbusconnection_p.h"
diff --git a/src/dbus/qdbusconnection.h b/src/dbus/qdbusconnection.h
index be8acdc4ea5..45d3850faed 100644
--- a/src/dbus/qdbusconnection.h
+++ b/src/dbus/qdbusconnection.h
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSCONNECTION_H
#define QDBUSCONNECTION_H
diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h
index 5cb175c1cdc..b553cd62a03 100644
--- a/src/dbus/qdbusconnection_p.h
+++ b/src/dbus/qdbusconnection_p.h
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
//
// W A R N I N G
diff --git a/src/dbus/qdbusconnectioninterface.cpp b/src/dbus/qdbusconnectioninterface.cpp
index f7dbbb01563..36636b355b0 100644
--- a/src/dbus/qdbusconnectioninterface.cpp
+++ b/src/dbus/qdbusconnectioninterface.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusconnectioninterface.h"
diff --git a/src/dbus/qdbusconnectioninterface.h b/src/dbus/qdbusconnectioninterface.h
index e728539a385..60742ea4043 100644
--- a/src/dbus/qdbusconnectioninterface.h
+++ b/src/dbus/qdbusconnectioninterface.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSCONNECTIONINTERFACE_H
#define QDBUSCONNECTIONINTERFACE_H
diff --git a/src/dbus/qdbusconnectionmanager.cpp b/src/dbus/qdbusconnectionmanager.cpp
index 73f11d82280..ef96231e1cc 100644
--- a/src/dbus/qdbusconnectionmanager.cpp
+++ b/src/dbus/qdbusconnectionmanager.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusconnectionmanager_p.h"
@@ -32,8 +33,8 @@ QDBusConnectionPrivate *QDBusConnectionManager::busConnection(QDBusConnection::B
return nullptr;
// we'll start in suspended delivery mode if we're in the main thread
- // (the event loop will resume delivery)
- bool suspendedDelivery = QThread::isMainThread();
+ // (the event loop will resume delivery) and QCoreApplication already exists
+ bool suspendedDelivery = QThread::isMainThread() && qApp;
const auto locker = qt_scoped_lock(defaultBusMutex);
if (defaultBuses[type])
diff --git a/src/dbus/qdbusconnectionmanager_p.h b/src/dbus/qdbusconnectionmanager_p.h
index 644c3c8fb1c..1ef048e5d72 100644
--- a/src/dbus/qdbusconnectionmanager_p.h
+++ b/src/dbus/qdbusconnectionmanager_p.h
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
//
// W A R N I N G
diff --git a/src/dbus/qdbuscontext.cpp b/src/dbus/qdbuscontext.cpp
index b8cb1dc8b10..f788b398186 100644
--- a/src/dbus/qdbuscontext.cpp
+++ b/src/dbus/qdbuscontext.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusmessage.h"
#include "qdbusconnection.h"
diff --git a/src/dbus/qdbuscontext.h b/src/dbus/qdbuscontext.h
index 02620449e18..47ced171171 100644
--- a/src/dbus/qdbuscontext.h
+++ b/src/dbus/qdbuscontext.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSCONTEXT_H
#define QDBUSCONTEXT_H
diff --git a/src/dbus/qdbuscontext_p.h b/src/dbus/qdbuscontext_p.h
index 1a544b8e44e..edd7aa068f0 100644
--- a/src/dbus/qdbuscontext_p.h
+++ b/src/dbus/qdbuscontext_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
//
// W A R N I N G
diff --git a/src/dbus/qdbuserror.cpp b/src/dbus/qdbuserror.cpp
index 0a5ba30d3a3..c168d8d471c 100644
--- a/src/dbus/qdbuserror.cpp
+++ b/src/dbus/qdbuserror.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbuserror.h"
diff --git a/src/dbus/qdbuserror.h b/src/dbus/qdbuserror.h
index 292f967acbe..dcb0c6666a0 100644
--- a/src/dbus/qdbuserror.h
+++ b/src/dbus/qdbuserror.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSERROR_H
#define QDBUSERROR_H
diff --git a/src/dbus/qdbusextratypes.cpp b/src/dbus/qdbusextratypes.cpp
index 042014ceab0..c27c1cbd5db 100644
--- a/src/dbus/qdbusextratypes.cpp
+++ b/src/dbus/qdbusextratypes.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusextratypes.h"
#include "qdbusutil_p.h"
diff --git a/src/dbus/qdbusextratypes.h b/src/dbus/qdbusextratypes.h
index 3b44bfc2175..3bfd38486a2 100644
--- a/src/dbus/qdbusextratypes.h
+++ b/src/dbus/qdbusextratypes.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSEXTRATYPES_H
#define QDBUSEXTRATYPES_H
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 4c9736dea6d..bfd3a092d39 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusintegrator_p.h"
diff --git a/src/dbus/qdbusintegrator_p.h b/src/dbus/qdbusintegrator_p.h
index ac9adf02100..f6486d87256 100644
--- a/src/dbus/qdbusintegrator_p.h
+++ b/src/dbus/qdbusintegrator_p.h
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
//
// W A R N I N G
diff --git a/src/dbus/qdbusinterface.cpp b/src/dbus/qdbusinterface.cpp
index d4da36b35c4..7481229dccf 100644
--- a/src/dbus/qdbusinterface.cpp
+++ b/src/dbus/qdbusinterface.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusinterface.h"
#include "qdbusinterface_p.h"
diff --git a/src/dbus/qdbusinterface.h b/src/dbus/qdbusinterface.h
index fc02463ac72..bff0336fd82 100644
--- a/src/dbus/qdbusinterface.h
+++ b/src/dbus/qdbusinterface.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSINTERFACE_H
#define QDBUSINTERFACE_H
diff --git a/src/dbus/qdbusinterface_p.h b/src/dbus/qdbusinterface_p.h
index caf24e589d4..63b7196527f 100644
--- a/src/dbus/qdbusinterface_p.h
+++ b/src/dbus/qdbusinterface_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
//
// W A R N I N G
diff --git a/src/dbus/qdbusinternalfilters.cpp b/src/dbus/qdbusinternalfilters.cpp
index 721564ed3cd..a46bc8e6c87 100644
--- a/src/dbus/qdbusinternalfilters.cpp
+++ b/src/dbus/qdbusinternalfilters.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusconnection_p.h"
diff --git a/src/dbus/qdbusintrospection.cpp b/src/dbus/qdbusintrospection.cpp
index 04b5ab77519..4f6c40743a5 100644
--- a/src/dbus/qdbusintrospection.cpp
+++ b/src/dbus/qdbusintrospection.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusintrospection_p.h"
#include "qdbusxmlparser_p.h"
diff --git a/src/dbus/qdbusintrospection_p.h b/src/dbus/qdbusintrospection_p.h
index 766cdffb621..3eccef8b7b0 100644
--- a/src/dbus/qdbusintrospection_p.h
+++ b/src/dbus/qdbusintrospection_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSINTROSPECTION_P_H
#define QDBUSINTROSPECTION_P_H
diff --git a/src/dbus/qdbusmessage.cpp b/src/dbus/qdbusmessage.cpp
index b10266ac8b7..f0a056e3127 100644
--- a/src/dbus/qdbusmessage.cpp
+++ b/src/dbus/qdbusmessage.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusmessage.h"
#include "qdbusmessage_p.h"
diff --git a/src/dbus/qdbusmessage.h b/src/dbus/qdbusmessage.h
index 608b9779d22..5b631c2b847 100644
--- a/src/dbus/qdbusmessage.h
+++ b/src/dbus/qdbusmessage.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSMESSAGE_H
#define QDBUSMESSAGE_H
diff --git a/src/dbus/qdbusmessage_p.h b/src/dbus/qdbusmessage_p.h
index 88ba78025e7..07cdeda4034 100644
--- a/src/dbus/qdbusmessage_p.h
+++ b/src/dbus/qdbusmessage_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSMESSAGE_P_H
#define QDBUSMESSAGE_P_H
diff --git a/src/dbus/qdbusmetaobject.cpp b/src/dbus/qdbusmetaobject.cpp
index c3590dc51cd..149392f9c3c 100644
--- a/src/dbus/qdbusmetaobject.cpp
+++ b/src/dbus/qdbusmetaobject.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusmetaobject_p.h"
diff --git a/src/dbus/qdbusmetaobject_p.h b/src/dbus/qdbusmetaobject_p.h
index 97d16d99d0e..473765a175c 100644
--- a/src/dbus/qdbusmetaobject_p.h
+++ b/src/dbus/qdbusmetaobject_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSMETAOBJECT_P_H
#define QDBUSMETAOBJECT_P_H
diff --git a/src/dbus/qdbusmetatype.cpp b/src/dbus/qdbusmetatype.cpp
index 3ae7589480e..5a862528026 100644
--- a/src/dbus/qdbusmetatype.cpp
+++ b/src/dbus/qdbusmetatype.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:critical reason:data-parser
#include "qdbusmetatype.h"
#include "qdbusmetatype_p.h"
diff --git a/src/dbus/qdbusmetatype.h b/src/dbus/qdbusmetatype.h
index 3304a69e1ef..66b6b1b0456 100644
--- a/src/dbus/qdbusmetatype.h
+++ b/src/dbus/qdbusmetatype.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSMETATYPE_H
#define QDBUSMETATYPE_H
diff --git a/src/dbus/qdbusmetatype_p.h b/src/dbus/qdbusmetatype_p.h
index 86a59f587dd..b72c0c431e5 100644
--- a/src/dbus/qdbusmetatype_p.h
+++ b/src/dbus/qdbusmetatype_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSMETATYPE_P_H
#define QDBUSMETATYPE_P_H
diff --git a/src/dbus/qdbusmisc.cpp b/src/dbus/qdbusmisc.cpp
index 635258c86d2..bf18b00d1cc 100644
--- a/src/dbus/qdbusmisc.cpp
+++ b/src/dbus/qdbusmisc.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include <string.h>
diff --git a/src/dbus/qdbuspendingcall.cpp b/src/dbus/qdbuspendingcall.cpp
index cd222c9ffa5..c0b382ca114 100644
--- a/src/dbus/qdbuspendingcall.cpp
+++ b/src/dbus/qdbuspendingcall.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbuspendingcall.h"
#include "qdbuspendingcall_p.h"
@@ -228,7 +229,7 @@ void QDBusPendingCallPrivate::waitForFinishedWithGui()
/*!
\fn QDBusPendingCall::QDBusPendingCall(QDBusPendingCall &&other)
- \since 6.11
+ \since 6.10
Moves \a other into this object.
diff --git a/src/dbus/qdbuspendingcall.h b/src/dbus/qdbuspendingcall.h
index 0db6667e5ec..1907fab78b9 100644
--- a/src/dbus/qdbuspendingcall.h
+++ b/src/dbus/qdbuspendingcall.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSPENDINGCALL_H
#define QDBUSPENDINGCALL_H
diff --git a/src/dbus/qdbuspendingcall_p.h b/src/dbus/qdbuspendingcall_p.h
index 2795cc3ecf8..407537c9bb0 100644
--- a/src/dbus/qdbuspendingcall_p.h
+++ b/src/dbus/qdbuspendingcall_p.h
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
//
// W A R N I N G
diff --git a/src/dbus/qdbuspendingreply.cpp b/src/dbus/qdbuspendingreply.cpp
index 7bb23aa3e36..b0fb2d75af5 100644
--- a/src/dbus/qdbuspendingreply.cpp
+++ b/src/dbus/qdbuspendingreply.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbuspendingreply.h"
#include "qdbuspendingcall_p.h"
diff --git a/src/dbus/qdbuspendingreply.h b/src/dbus/qdbuspendingreply.h
index 72e1bbdc313..7b76bcd1b7c 100644
--- a/src/dbus/qdbuspendingreply.h
+++ b/src/dbus/qdbuspendingreply.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSPENDINGREPLY_H
#define QDBUSPENDINGREPLY_H
diff --git a/src/dbus/qdbusreply.cpp b/src/dbus/qdbusreply.cpp
index 5b26250b10d..a90e7354ed2 100644
--- a/src/dbus/qdbusreply.cpp
+++ b/src/dbus/qdbusreply.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusreply.h"
#include "qdbusmetatype.h"
diff --git a/src/dbus/qdbusreply.h b/src/dbus/qdbusreply.h
index df488208c85..5dfb63f3b4b 100644
--- a/src/dbus/qdbusreply.h
+++ b/src/dbus/qdbusreply.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSREPLY_H
#define QDBUSREPLY_H
diff --git a/src/dbus/qdbusserver.cpp b/src/dbus/qdbusserver.cpp
index e9131a14c4b..9e1063424a5 100644
--- a/src/dbus/qdbusserver.cpp
+++ b/src/dbus/qdbusserver.cpp
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusserver.h"
#include "qdbusconnection_p.h"
diff --git a/src/dbus/qdbusserver.h b/src/dbus/qdbusserver.h
index 34985cc0554..04b7930d412 100644
--- a/src/dbus/qdbusserver.h
+++ b/src/dbus/qdbusserver.h
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSSERVER_H
#define QDBUSSERVER_H
diff --git a/src/dbus/qdbusservicewatcher.cpp b/src/dbus/qdbusservicewatcher.cpp
index bf94f54f564..6b9675c19ec 100644
--- a/src/dbus/qdbusservicewatcher.cpp
+++ b/src/dbus/qdbusservicewatcher.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusservicewatcher.h"
#include "qdbusconnection.h"
diff --git a/src/dbus/qdbusservicewatcher.h b/src/dbus/qdbusservicewatcher.h
index 71c63084b18..d07ae0fe5d2 100644
--- a/src/dbus/qdbusservicewatcher.h
+++ b/src/dbus/qdbusservicewatcher.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSSERVICEWATCHER_H
#define QDBUSSERVICEWATCHER_H
diff --git a/src/dbus/qdbusthreaddebug_p.h b/src/dbus/qdbusthreaddebug_p.h
index bcbd1efb494..70fbf762d19 100644
--- a/src/dbus/qdbusthreaddebug_p.h
+++ b/src/dbus/qdbusthreaddebug_p.h
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSTHREADDEBUG_P_H
#define QDBUSTHREADDEBUG_P_H
diff --git a/src/dbus/qdbusunixfiledescriptor.cpp b/src/dbus/qdbusunixfiledescriptor.cpp
index 365f6cbc76c..bc38d142b95 100644
--- a/src/dbus/qdbusunixfiledescriptor.cpp
+++ b/src/dbus/qdbusunixfiledescriptor.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusunixfiledescriptor.h"
diff --git a/src/dbus/qdbusunixfiledescriptor.h b/src/dbus/qdbusunixfiledescriptor.h
index cbcd8b53a95..c946ec1761b 100644
--- a/src/dbus/qdbusunixfiledescriptor.h
+++ b/src/dbus/qdbusunixfiledescriptor.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSUNIXFILEDESCRIPTOR_H
diff --git a/src/dbus/qdbusutil.cpp b/src/dbus/qdbusutil.cpp
index 84ce5ed78dc..9c1c7e8edf3 100644
--- a/src/dbus/qdbusutil.cpp
+++ b/src/dbus/qdbusutil.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:critical reason:data-parser
#include "qdbusutil_p.h"
diff --git a/src/dbus/qdbusutil_p.h b/src/dbus/qdbusutil_p.h
index 3db93849682..580a2b92c96 100644
--- a/src/dbus/qdbusutil_p.h
+++ b/src/dbus/qdbusutil_p.h
@@ -1,6 +1,7 @@
// Copyright (C) 2016 The Qt Company Ltd.
// Copyright (C) 2016 Intel Corporation.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:critical reason:data-parser
//
// W A R N I N G
diff --git a/src/dbus/qdbusvirtualobject.cpp b/src/dbus/qdbusvirtualobject.cpp
index 2e5df125d25..878152ad32d 100644
--- a/src/dbus/qdbusvirtualobject.cpp
+++ b/src/dbus/qdbusvirtualobject.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include "qdbusvirtualobject.h"
diff --git a/src/dbus/qdbusvirtualobject.h b/src/dbus/qdbusvirtualobject.h
index 573d731d201..451b0040069 100644
--- a/src/dbus/qdbusvirtualobject.h
+++ b/src/dbus/qdbusvirtualobject.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSVIRTUALOBJECT_H
#define QDBUSVIRTUALOBJECT_H
diff --git a/src/dbus/qdbusxmlgenerator.cpp b/src/dbus/qdbusxmlgenerator.cpp
index 412ac180951..69d27a49f9f 100644
--- a/src/dbus/qdbusxmlgenerator.cpp
+++ b/src/dbus/qdbusxmlgenerator.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#include <QtCore/qmetaobject.h>
#include <QtCore/qstringlist.h>
diff --git a/src/dbus/qdbusxmlparser.cpp b/src/dbus/qdbusxmlparser.cpp
index c2e8df8be7e..b3e1b6b78b6 100644
--- a/src/dbus/qdbusxmlparser.cpp
+++ b/src/dbus/qdbusxmlparser.cpp
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:critical reason:data-parser
#include "qdbusxmlparser_p.h"
#include "qdbusutil_p.h"
diff --git a/src/dbus/qdbusxmlparser_p.h b/src/dbus/qdbusxmlparser_p.h
index 0476ba36281..6cee2da76cc 100644
--- a/src/dbus/qdbusxmlparser_p.h
+++ b/src/dbus/qdbusxmlparser_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QDBUSXMLPARSER_P_H
#define QDBUSXMLPARSER_P_H
diff --git a/src/dbus/qtdbusglobal.h b/src/dbus/qtdbusglobal.h
index 9724c066f6a..07cfa16a258 100644
--- a/src/dbus/qtdbusglobal.h
+++ b/src/dbus/qtdbusglobal.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QTDBUSGLOBAL_H
#define QTDBUSGLOBAL_H
diff --git a/src/dbus/qtdbusglobal_p.h b/src/dbus/qtdbusglobal_p.h
index 9d315de75c8..6e748c20ae3 100644
--- a/src/dbus/qtdbusglobal_p.h
+++ b/src/dbus/qtdbusglobal_p.h
@@ -1,5 +1,6 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// Qt-Security score:significant reason:default
#ifndef QTDBUSGLOBAL_P_H
#define QTDBUSGLOBAL_P_H
diff --git a/src/gui/math3d/qmatrix4x4.cpp b/src/gui/math3d/qmatrix4x4.cpp
index 1703fa5b0fe..1e0f9295110 100644
--- a/src/gui/math3d/qmatrix4x4.cpp
+++ b/src/gui/math3d/qmatrix4x4.cpp
@@ -4,6 +4,8 @@
#include "qmatrix4x4.h"
#include <QtCore/qmath.h>
#include <QtCore/qvariant.h>
+
+#include <QtGui/qquaternion.h>
#include <QtGui/qtransform.h>
#include <cmath>
diff --git a/src/gui/math3d/qmatrix4x4.h b/src/gui/math3d/qmatrix4x4.h
index 80ba62ca36f..2ba274d4517 100644
--- a/src/gui/math3d/qmatrix4x4.h
+++ b/src/gui/math3d/qmatrix4x4.h
@@ -7,7 +7,6 @@
#include <QtGui/qtguiglobal.h>
#include <QtGui/qvector3d.h>
#include <QtGui/qvector4d.h>
-#include <QtGui/qquaternion.h>
#include <QtGui/qgenericmatrix.h>
#include <QtCore/qrect.h>
@@ -15,6 +14,9 @@ class tst_QMatrixNxN;
QT_BEGIN_NAMESPACE
+#ifndef QT_NO_QUATERNION
+class QQuaternion;
+#endif
#ifndef QT_NO_MATRIX4X4
diff --git a/src/network/access/qhttp2connection.cpp b/src/network/access/qhttp2connection.cpp
index 6f8a318dae0..9b339a19a24 100644
--- a/src/network/access/qhttp2connection.cpp
+++ b/src/network/access/qhttp2connection.cpp
@@ -663,8 +663,10 @@ void QHttp2Stream::handleDATA(const Frame &inboundFrame)
{
QHttp2Connection *connection = getConnection();
- qCDebug(qHttp2ConnectionLog, "[%p] stream %u, received DATA frame with payload of %u bytes",
- connection, m_streamID, inboundFrame.payloadSize());
+ qCDebug(qHttp2ConnectionLog,
+ "[%p] stream %u, received DATA frame with payload of %u bytes, closing stream? %s",
+ connection, m_streamID, inboundFrame.payloadSize(),
+ inboundFrame.flags().testFlag(Http2::FrameFlag::END_STREAM) ? "yes" : "no");
// RFC 9113, 6.1: If a DATA frame is received whose stream is not in the "open" or "half-closed
// (local)" state, the recipient MUST respond with a stream error (Section 5.4.2) of type
@@ -1426,7 +1428,8 @@ void QHttp2Connection::handleHEADERS()
Q_ASSERT(inboundFrame.type() == FrameType::HEADERS);
const auto streamID = inboundFrame.streamID();
- qCDebug(qHttp2ConnectionLog, "[%p] Received HEADERS frame on stream %d", this, streamID);
+ qCDebug(qHttp2ConnectionLog, "[%p] Received HEADERS frame on stream %d, end stream? %s", this,
+ streamID, inboundFrame.flags().testFlag(Http2::FrameFlag::END_STREAM) ? "yes" : "no");
// RFC 9113, 6.2: If a HEADERS frame is received whose Stream Identifier field is 0x00, the
// recipient MUST respond with a connection error.
@@ -1849,6 +1852,10 @@ void QHttp2Connection::handleWINDOW_UPDATE()
void QHttp2Connection::handleCONTINUATION()
{
Q_ASSERT(inboundFrame.type() == FrameType::CONTINUATION);
+ auto streamID = inboundFrame.streamID();
+ qCDebug(qHttp2ConnectionLog,
+ "[%p] Received CONTINUATION frame on stream %d, end stream? %s", this, streamID,
+ inboundFrame.flags().testFlag(Http2::FrameFlag::END_STREAM) ? "yes" : "no");
if (continuedFrames.empty())
return connectionError(PROTOCOL_ERROR,
"CONTINUATION without a preceding HEADERS or PUSH_PROMISE");
diff --git a/src/plugins/styles/modernwindows/qwindows11style.cpp b/src/plugins/styles/modernwindows/qwindows11style.cpp
index 62269a21de1..84101b69e9f 100644
--- a/src/plugins/styles/modernwindows/qwindows11style.cpp
+++ b/src/plugins/styles/modernwindows/qwindows11style.cpp
@@ -2151,9 +2151,6 @@ void QWindows11Style::polish(QWidget* widget)
widget->setWindowFlag(Qt::NoDropShadowWindowHint);
widget->setAttribute(Qt::WA_RightToLeft, layoutDirection);
widget->setAttribute(Qt::WA_WState_Created, wasCreated);
- auto pal = widget->palette();
- pal.setColor(widget->backgroundRole(), Qt::transparent);
- widget->setPalette(pal);
if (!isScrollBar) {
bool inGraphicsView = widget->graphicsProxyWidget() != nullptr;
if (!inGraphicsView && comboBoxContainer && comboBoxContainer->parentWidget())
diff --git a/src/testlib/3rdparty/catch2/qt_attribution.json b/src/testlib/3rdparty/catch2/qt_attribution.json
index 1e4f2c5297c..ad231efd426 100644
--- a/src/testlib/3rdparty/catch2/qt_attribution.json
+++ b/src/testlib/3rdparty/catch2/qt_attribution.json
@@ -5,6 +5,7 @@
"QDocModule": "qttestlib",
"QtUsage": "Used for testing of the Qt Test module.",
"Comment": {
+ "OldBranch": "Stick to its v2.x branch; no suitable file in v3",
"UpstreamFile": "single_include/catch2/catch.hpp",
"Generator": "scripts/generateSingleHeader.py",
"General": "no relevant CPE found"
diff --git a/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp b/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
index 170c38d57c1..820a7b4bdb5 100644
--- a/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
+++ b/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
@@ -7,7 +7,6 @@
#include <qfile.h>
#include <qdatetime.h>
#include <qdir.h>
-#include <qset.h>
#include <qstandardpaths.h>
#include <qstring.h>
#include <qtemporarydir.h>
@@ -15,6 +14,7 @@
#include <QtTest/private/qtesthelpers_p.h>
+#include <QtCore/private/qduplicatetracker_p.h>
#include <QtCore/qscopeguard.h>
#if defined(Q_OS_WIN)
@@ -551,9 +551,9 @@ void tst_QTemporaryFile::openOnRootDrives()
void tst_QTemporaryFile::stressTest()
{
- const int iterations = 1000;
+ constexpr int iterations = 1000;
- QSet<QString> names;
+ QDuplicateTracker<QString, iterations> names;
const auto remover = qScopeGuard([&] {
for (const QString &s : std::as_const(names))
@@ -564,8 +564,7 @@ void tst_QTemporaryFile::stressTest()
QTemporaryFile file;
file.setAutoRemove(false);
QVERIFY2(file.open(), qPrintable(file.errorString()));
- QVERIFY(!names.contains(file.fileName()));
- names.insert(file.fileName());
+ QVERIFY(!names.hasSeen(file.fileName()));
}
}
diff --git a/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp b/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp
index 0254cbd1360..e41a4760e6a 100644
--- a/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp
+++ b/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp
@@ -23,6 +23,8 @@
#include "../../../network-settings.h"
#include <QtTest/private/qemulationdetector_p.h>
+using namespace Qt::StringLiterals;
+
QT_BEGIN_NAMESPACE
template<> struct QMetaTypeId<QIODevice::OpenModeFlag>
{ enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Int; } };
@@ -1379,12 +1381,12 @@ void tst_QTextStream::pos2()
// ------------------------------------------------------------------------------
void tst_QTextStream::pos3LargeFile()
{
+ // NOTE: The unusual spacing is to ensure non-1-character whitespace.
+ constexpr auto lineString = " 0 1 2\t3 4\t \t5 6 7 8 9 \n"_L1;
{
QFile file(testFileName);
QVERIFY(file.open(QIODevice::WriteOnly | QIODevice::Text));
QTextStream out( &file );
- // NOTE: The unusual spacing is to ensure non-1-character whitespace.
- QString lineString = " 0 1 2\t3 4\t \t5 6 7 8 9 \n";
// Approximately 5kb text file (more is too slow (QTBUG-138435))
const int NbLines = (5 * 1024) / lineString.size() + 1;
for (int line = 0; line < NbLines; ++line)
@@ -1395,8 +1397,15 @@ void tst_QTextStream::pos3LargeFile()
QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
QTextStream in( &file );
constexpr int testValues[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+ qint64 expectedLineEnd = 0;
+#ifdef Q_OS_WIN // CRLF platform
+ constexpr int crlfAdjustment = 1;
+#else
+ constexpr int crlfAdjustment = 0;
+#endif
+ const auto expectedLineLength = lineString.size() + crlfAdjustment;
+ QCOMPARE(in.pos(), 0);
while (true) {
- in.pos();
for (size_t i = 0; i < std::size(testValues); ++i) {
int value = -42;
if (!(in >> value)) {
@@ -1407,6 +1416,9 @@ void tst_QTextStream::pos3LargeFile()
}
QCOMPARE(value, testValues[i]);
}
+ expectedLineEnd += expectedLineLength;
+ // Final space and newline are not consumed until next read.
+ QCOMPARE(in.pos(), expectedLineEnd - 2 - crlfAdjustment);
}
}
diff --git a/tests/auto/corelib/text/qlocale/tst_qlocale.cpp b/tests/auto/corelib/text/qlocale/tst_qlocale.cpp
index bfc6074689b..50e17728cf3 100644
--- a/tests/auto/corelib/text/qlocale/tst_qlocale.cpp
+++ b/tests/auto/corelib/text/qlocale/tst_qlocale.cpp
@@ -78,6 +78,9 @@ private slots:
void negativeZero_data();
void negativeZero();
+ void signsNeverCompareEqualToNullCharacter_data() { testNames_data(); }
+ void signsNeverCompareEqualToNullCharacter();
+
void dayOfWeek();
void dayOfWeek_data();
void formatDate();
@@ -2114,6 +2117,19 @@ void tst_QLocale::negativeZero()
QCOMPARE(locale.toString(std::copysign(0.0, -1.0)), expect);
}
+void tst_QLocale::signsNeverCompareEqualToNullCharacter() // otherwise QTextStream has a problem
+{
+ QFETCH(QLocale::Language, language);
+ QFETCH(const QLocale::Territory, country);
+
+ if (language == QLocale::AnyLanguage && country == QLocale::AnyTerritory)
+ language = QLocale::C;
+
+ const QLocale loc(language, country);
+ QCOMPARE_NE(loc.negativeSign(), QChar());
+ QCOMPARE_NE(loc.positiveSign(), QChar());
+}
+
void tst_QLocale::dayOfWeek_data()
{
QTest::addColumn<QDate>("date");
diff --git a/tests/auto/dbus/qdbusconnection/CMakeLists.txt b/tests/auto/dbus/qdbusconnection/CMakeLists.txt
index 56ae21f2911..cbbe76a7dc7 100644
--- a/tests/auto/dbus/qdbusconnection/CMakeLists.txt
+++ b/tests/auto/dbus/qdbusconnection/CMakeLists.txt
@@ -19,3 +19,15 @@ qt_internal_add_test(tst_qdbusconnection
TESTDATA
tst_qdbusconnection.conf
)
+
+qt_internal_add_executable(qdbusdelayeddeliveryreenablehelper
+ OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/"
+ SOURCES
+ qdbusdelayeddeliveryreenablehelper.cpp
+ LIBRARIES
+ Qt::DBus
+)
+
+add_dependencies(tst_qdbusconnection
+ qdbusdelayeddeliveryreenablehelper
+)
diff --git a/tests/auto/dbus/qdbusconnection/qdbusdelayeddeliveryreenablehelper.cpp b/tests/auto/dbus/qdbusconnection/qdbusdelayeddeliveryreenablehelper.cpp
new file mode 100644
index 00000000000..cd916d5b639
--- /dev/null
+++ b/tests/auto/dbus/qdbusconnection/qdbusdelayeddeliveryreenablehelper.cpp
@@ -0,0 +1,56 @@
+// Copyright (C) 2025 Intel Corporation.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#include <QtCore/QTimer>
+#include <QtCore/QCoreApplication>
+#include <QtDBus/QDBusConnection>
+#include <QtDBus/QDBusMessage>
+
+#include <stdio.h>
+
+using namespace Qt::StringLiterals;
+using namespace std::chrono_literals;
+
+static QString myInterface()
+{
+ return u"local.qdbusdelayeddeliveryreenablehelper"_s;
+}
+
+static void makeSynchronousCall(QDBusConnection &conn)
+{
+ QDBusMessage msg = QDBusMessage::createMethodCall("org.freedesktop.DBus", "/",
+ "org.freedesktop.DBus.Peer", "Ping");
+ conn.call(msg);
+}
+
+static void emitSignal(QDBusConnection &conn)
+{
+ QDBusMessage msg = QDBusMessage::createSignal("/", myInterface(), "quit");
+ conn.send(msg);
+}
+
+int main(int argc, char **argv)
+{
+ // Open a connection to the bus *before* QCoreApplication exists;
+ // this will put the connection in delayed delivery mode
+ QDBusConnection session = QDBusConnection::sessionBus();
+ if (!session.isConnected()) {
+ fprintf(stderr, "Session bus did not connect!");
+ return 1;
+ }
+ makeSynchronousCall(session);
+
+ QCoreApplication app(argc, argv);
+ QTimer::singleShot(15s, qApp, [] {
+ fprintf(stderr, "Did not receive signal.\n");
+ qApp->exit(1);
+ });
+
+ // connect a remote, wildcard signal to qApp->quit()
+ session.connect(QString(), QString(), myInterface(), "quit", &app, SLOT(quit()));
+
+ // send ourselves the signal to quit, via D-Bus
+ emitSignal(session);
+
+ return app.exec();
+}
diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
index ab750dff330..fe9214c5513 100644
--- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
+++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
@@ -13,11 +13,6 @@
#include <QDBusInterface>
#include <QDBusConnectionInterface>
-#ifdef Q_OS_UNIX
-# include <sys/types.h>
-# include <signal.h>
-#endif
-
void MyObject::method(const QDBusMessage &msg)
{
path = msg.path();
@@ -1473,6 +1468,31 @@ void tst_QDBusConnection::parentClassSignal()
QTRY_COMPARE(recv.signalsReceived, 2);
}
+// see also tst_qdbusconnection_delayed
+void tst_QDBusConnection::delayedDeliveryReenabledAfterUsedInMainThread()
+{
+#if !QT_CONFIG(process)
+ QSKIP("Test requires QProcess");
+#elif defined(HAS_HOOKSETUPFUNCTION)
+ QSKIP("No difference to run by tst_QDBusConnection");
+#else
+# if defined(Q_OS_WIN)
+# define EXE ".exe"
+# else
+# define EXE ""
+# endif
+ if (!QCoreApplication::instance())
+ QSKIP("Test requires a QCoreApplication");
+
+ QProcess process;
+ process.start(QFINDTESTDATA("qdbusdelayeddeliveryreenablehelper" EXE));
+ QVERIFY2(process.waitForFinished(25000), qPrintable(process.errorString()));
+ QCOMPARE(process.readAllStandardError(), QString());
+ QCOMPARE(process.exitCode(), 0);
+# undef EXE
+#endif
+}
+
QString MyObject::path;
QString MyObjectWithoutInterface::path;
QString MyObjectWithoutInterface::interface;
diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h
index 4137859414c..dc37e3157b4 100644
--- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h
+++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h
@@ -126,6 +126,8 @@ private slots:
void parentClassSignal();
+ void delayedDeliveryReenabledAfterUsedInMainThread();
+
public:
QString serviceName() const { return "org.qtproject.Qt.Autotests.QDBusConnection"; }
bool callMethod(const QDBusConnection &conn, const QString &path);