Accepting request 809287 from KDE:Qt:5.15

Qt 5.15.0

OBS-URL: https://build.opensuse.org/request/show/809287
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase?expand=0&rev=106
This commit is contained in:
Yuchen Lin 2020-05-29 19:13:53 +00:00 committed by Git OBS Bridge
commit ba5a894182
13 changed files with 354 additions and 598 deletions

View File

@ -0,0 +1,40 @@
From 8a053986b4c43a133f6824f839bd78a476d183e3 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Wed, 19 Feb 2020 11:42:06 +0100
Subject: [PATCH] Don't white-list recent Mesa versions for multithreading
It's not stable.
---
.../gl_integrations/xcb_glx/qglxintegration.cpp | 16 ----------------
1 file changed, 16 deletions(-)
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
index 75189a9c80..e328ea2d4b 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
@@ -764,22 +764,6 @@ void QGLXContext::queryDummyContext()
m_supportsThreading = false;
}
- if (mesaVersionStr) {
- // The issue was fixed in Xcb 1.11, but we can't check for that
- // at runtime, so instead assume it fixed with recent Mesa versions
- // released several years after the Xcb fix.
-#if QT_CONFIG(regularexpression)
- QRegularExpression versionTest(QStringLiteral("Mesa (\\d+)"));
- QRegularExpressionMatch result = versionTest.match(QString::fromLatin1(mesaVersionStr));
- int versionNr = 0;
- if (result.hasMatch())
- versionNr = result.captured(1).toInt();
- if (versionNr >= 17) {
- // White-listed
- m_supportsThreading = true;
- }
-#endif
- }
if (!m_supportsThreading) {
qCDebug(lcQpaGl).nospace() << "Multithreaded OpenGL disabled: "
"blacklisted vendor \"Mesa Project\"";
--
2.23.0

View File

@ -0,0 +1,44 @@
From 5fbcd6b8f1635916c0a2669649d3c96312b54288 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Tue, 14 Apr 2020 11:33:23 +0200
Subject: [PATCH] Lower required version of OpenSSL to 1.1.0
SLE 15 until SP2 (so Leap < 15.2) ships 1.1.0 which won't get upgraded.
---
src/network/configure.json | 4 ++--
src/network/ssl/qsslsocket_openssl.cpp | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/network/configure.json b/src/network/configure.json
index 289d84fbb4..c414e729d7 100644
--- a/src/network/configure.json
+++ b/src/network/configure.json
@@ -61,8 +61,8 @@
"export": "openssl",
"test": {
"tail": [
- "#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10101000L",
- "# error OpenSSL >= 1.1.1 is required",
+ "#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x10100000L",
+ "# error OpenSSL >= 1.1.0 is required",
"#endif",
"#if !defined(OPENSSL_NO_EC) && !defined(SSL_CTRL_SET_CURVES)",
"# error OpenSSL was reported as >= 1.1.1 but is missing required features, possibly it's libressl which is unsupported",
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
index 9b28d52e21..daddea1feb 100644
--- a/src/network/ssl/qsslsocket_openssl.cpp
+++ b/src/network/ssl/qsslsocket_openssl.cpp
@@ -1943,8 +1943,8 @@ bool QSslSocketPrivate::ensureLibraryLoaded()
if (q_OPENSSL_init_ssl(0, nullptr) != 1)
return false;
- if (q_OpenSSL_version_num() < 0x10101000L) {
- qCWarning(lcSsl, "QSslSocket: OpenSSL >= 1.1.1 is required; %s was found instead", q_OpenSSL_version(OPENSSL_VERSION));
+ if (q_OpenSSL_version_num() < 0x10100000L) {
+ qCWarning(lcSsl, "QSslSocket: OpenSSL >= 1.1.0 is required; %s was found instead", q_OpenSSL_version(OPENSSL_VERSION));
return false;
}
--
2.25.1

View File

@ -1,142 +0,0 @@
From 9dcf75766469dbe61c19389bae0413767360c234 Mon Sep 17 00:00:00 2001
From: Shawn Rutledge <shawn.rutledge@qt.io>
Date: Mon, 24 Feb 2020 16:23:27 +0100
Subject: [PATCH] QTextMarkdownImporter: fix use after free; add fuzz-generated
tests
It was possible to end up with a dangling pointer in m_listStack.
This is now avoided by using QPointer and doing nullptr checks before
accessing any QTextList pointer stored there.
We have 2 specimens of garbage that caused crashes before; now they don't.
But only fuzz20450 triggered the dangling pointer in the list stack.
The crash caused by fuzz20580 was fixed by updating md4c from upstream:
4b0fc030777cd541604f5ebaaad47a2b76d61ff9
Change-Id: I8e1eca23b281256a03aea0f55e9ae20f1bdd2a38
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
---
src/gui/text/qtextmarkdownimporter.cpp | 7 ++++--
src/gui/text/qtextmarkdownimporter_p.h | 2 +-
.../qtextmarkdownimporter/data/fuzz20450.md | 5 ++++
.../qtextmarkdownimporter/data/fuzz20580.md | 1 +
.../qtextmarkdownimporter.pro | 2 ++
.../tst_qtextmarkdownimporter.cpp | 24 +++++++++++++++++++
6 files changed, 38 insertions(+), 3 deletions(-)
create mode 100644 tests/auto/gui/text/qtextmarkdownimporter/data/fuzz20450.md
create mode 100644 tests/auto/gui/text/qtextmarkdownimporter/data/fuzz20580.md
diff --git a/src/gui/text/qtextmarkdownimporter.cpp b/src/gui/text/qtextmarkdownimporter.cpp
index 88965046ce..ea62d5c2e5 100644
--- a/src/gui/text/qtextmarkdownimporter.cpp
+++ b/src/gui/text/qtextmarkdownimporter.cpp
@@ -575,7 +575,10 @@ void QTextMarkdownImporter::insertBlock()
QTextBlockFormat blockFormat;
if (!m_listStack.isEmpty() && !m_needsInsertList && m_listItem) {
QTextList *list = m_listStack.top();
- blockFormat = list->item(list->count() - 1).blockFormat();
+ if (list)
+ blockFormat = list->item(list->count() - 1).blockFormat();
+ else
+ qWarning() << "attempted to insert into a list that no longer exists";
}
if (m_blockQuoteDepth) {
blockFormat.setProperty(QTextFormat::BlockQuoteLevel, m_blockQuoteDepth);
@@ -605,7 +608,7 @@ void QTextMarkdownImporter::insertBlock()
}
if (m_needsInsertList) {
m_listStack.push(m_cursor->createList(m_listFormat));
- } else if (!m_listStack.isEmpty() && m_listItem) {
+ } else if (!m_listStack.isEmpty() && m_listItem && m_listStack.top()) {
m_listStack.top()->add(m_cursor->block());
}
m_needsInsertList = false;
diff --git a/src/gui/text/qtextmarkdownimporter_p.h b/src/gui/text/qtextmarkdownimporter_p.h
index f450da5eb3..e3b4bcd0f2 100644
--- a/src/gui/text/qtextmarkdownimporter_p.h
+++ b/src/gui/text/qtextmarkdownimporter_p.h
@@ -113,7 +113,7 @@ private:
#endif
QString m_blockCodeLanguage;
QVector<int> m_nonEmptyTableCells; // in the current row
- QStack<QTextList *> m_listStack;
+ QStack<QPointer<QTextList>> m_listStack;
QStack<QTextCharFormat> m_spanFormatStack;
QFont m_monoFont;
QPalette m_palette;
diff --git a/tests/auto/gui/text/qtextmarkdownimporter/data/fuzz20450.md b/tests/auto/gui/text/qtextmarkdownimporter/data/fuzz20450.md
new file mode 100644
index 0000000000..d7005cb01e
--- /dev/null
+++ b/tests/auto/gui/text/qtextmarkdownimporter/data/fuzz20450.md
@@ -0,0 +1,5 @@
+<t>ÿ
+* ÿ
+
+ ÿ
+* ÿ
\ No newline at end of file
diff --git a/tests/auto/gui/text/qtextmarkdownimporter/data/fuzz20580.md b/tests/auto/gui/text/qtextmarkdownimporter/data/fuzz20580.md
new file mode 100644
index 0000000000..22006f5876
--- /dev/null
+++ b/tests/auto/gui/text/qtextmarkdownimporter/data/fuzz20580.md
@@ -0,0 +1 @@
+| --:| <?`?><?|`
\ No newline at end of file
diff --git a/tests/auto/gui/text/qtextmarkdownimporter/qtextmarkdownimporter.pro b/tests/auto/gui/text/qtextmarkdownimporter/qtextmarkdownimporter.pro
index 7b7fb61244..f3818efbf7 100644
--- a/tests/auto/gui/text/qtextmarkdownimporter/qtextmarkdownimporter.pro
+++ b/tests/auto/gui/text/qtextmarkdownimporter/qtextmarkdownimporter.pro
@@ -5,5 +5,7 @@ SOURCES += tst_qtextmarkdownimporter.cpp
TESTDATA += \
data/thematicBreaks.md \
data/headingBulletsContinuations.md \
+ data/fuzz20450.md \
+ data/fuzz20580.md \
DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp b/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp
index 39a1370f6f..5eb04af696 100644
--- a/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp
+++ b/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp
@@ -57,6 +57,8 @@ private slots:
void lists();
void avoidBlankLineAtBeginning_data();
void avoidBlankLineAtBeginning();
+ void pathological_data();
+ void pathological();
};
void tst_QTextMarkdownImporter::headingBulletsContinuations()
@@ -256,5 +258,27 @@ void tst_QTextMarkdownImporter::avoidBlankLineAtBeginning() // QTBUG-81060
QCOMPARE(i, expectedNumberOfParagraphs);
}
+void tst_QTextMarkdownImporter::pathological_data()
+{
+ QTest::addColumn<QString>("warning");
+ QTest::newRow("fuzz20450") << "attempted to insert into a list that no longer exists";
+ QTest::newRow("fuzz20580") << "";
+}
+
+void tst_QTextMarkdownImporter::pathological() // avoid crashing on crazy input
+{
+ QFETCH(QString, warning);
+ QString filename = QLatin1String("data/") + QTest::currentDataTag() + QLatin1String(".md");
+ QFile f(QFINDTESTDATA(filename));
+ QVERIFY(f.open(QFile::ReadOnly));
+#ifdef QT_NO_DEBUG
+ Q_UNUSED(warning)
+#else
+ if (!warning.isEmpty())
+ QTest::ignoreMessage(QtWarningMsg, warning.toLatin1());
+#endif
+ QTextDocument().setMarkdown(f.readAll());
+}
+
QTEST_MAIN(tst_QTextMarkdownImporter)
#include "tst_qtextmarkdownimporter.moc"
--
2.25.1

View File

@ -1,50 +0,0 @@
From 7525dcc085d0453209bd7c321adac9c54487afa6 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Thu, 14 Mar 2019 10:30:14 +0100
Subject: [PATCH 1/3] Revert "Blacklist nouveau and llvmpipe for
multithreading"
This reverts commit 96f6cab22cab252cbe7a98bbeadde95497e0bd75.
---
.../xcb_glx/qglxintegration.cpp | 18 ------------------
1 file changed, 18 deletions(-)
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
index 476de6d1e5..d42a33c22b 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
@@ -652,12 +652,6 @@ static const char *qglx_threadedgl_blacklist_renderer[] = {
0
};
-static const char *qglx_threadedgl_blacklist_vendor[] = {
- "llvmpipe", // QTCREATORBUG-10666
- "nouveau", // https://bugs.freedesktop.org/show_bug.cgi?id=91632
- nullptr
-};
-
void QGLXContext::queryDummyContext()
{
if (m_queriedDummyContext)
@@ -716,18 +710,6 @@ void QGLXContext::queryDummyContext()
}
}
}
- if (const char *vendor = (const char *) glGetString(GL_VENDOR)) {
- for (int i = 0; qglx_threadedgl_blacklist_vendor[i]; ++i) {
- if (strstr(vendor, qglx_threadedgl_blacklist_vendor[i]) != 0) {
- qCDebug(lcQpaGl).nospace() << "Multithreaded OpenGL disabled: "
- "blacklisted vendor \""
- << qglx_threadedgl_blacklist_vendor[i]
- << "\"";
- m_supportsThreading = false;
- break;
- }
- }
- }
if (glxvendor && m_supportsThreading) {
// Blacklist Mesa drivers due to QTCREATORBUG-10875 (crash in creator),
--
2.20.1

View File

@ -0,0 +1,139 @@
From 9928d66764337494d0e99208a3418fcd01ac3e66 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Wed, 27 May 2020 10:48:45 +0200
Subject: [PATCH] Revert "QMenu: hide when a QWidgetAction fires the trigged
signal"
This reverts commit b4669b919048c1dbdac2b3e9b2e79f3d023aa078.
---
src/widgets/widgets/qmenu.cpp | 9 +--
.../auto/widgets/widgets/qmenu/tst_qmenu.cpp | 79 -------------------
2 files changed, 4 insertions(+), 84 deletions(-)
diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp
index 865e3b2fb6..2878344f07 100644
--- a/src/widgets/widgets/qmenu.cpp
+++ b/src/widgets/widgets/qmenu.cpp
@@ -1470,9 +1470,6 @@ void QMenuPrivate::_q_actionTriggered()
}
}
activateCausedStack(list, action, QAction::Trigger, false);
- // if a widget action fires, we need to hide the menu explicitly
- if (qobject_cast<QWidgetAction*>(action))
- hideUpToMenuBar();
}
}
}
@@ -1640,8 +1637,10 @@ void QMenu::initStyleOption(QStyleOptionMenuItem *option, const QAction *action)
Widgets can be inserted into menus with the QWidgetAction class.
Instances of this class are used to hold widgets, and are inserted
- into menus with the addAction() overload that takes a QAction. If the
- QWidgetAction fires the triggered() signal, the menu will close.
+ into menus with the addAction() overload that takes a QAction.
+
+ Conversely, actions can be added to widgets with the addAction(),
+ addActions() and insertAction() functions.
\warning To make QMenu visible on the screen, exec() or popup() should be
used instead of show().
diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
index 5a24995caf..22494f3d24 100644
--- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
+++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
@@ -116,7 +116,6 @@ private slots:
void QTBUG20403_nested_popup_on_shortcut_trigger();
void QTBUG47515_widgetActionEnterLeave();
void QTBUG8122_widgetActionCrashOnClose();
- void widgetActionTriggerClosesMenu();
void QTBUG_10735_crashWithDialog();
#ifdef Q_OS_MAC
@@ -1408,84 +1407,6 @@ void tst_QMenu::QTBUG8122_widgetActionCrashOnClose()
QTRY_VERIFY(menu->isHidden());
}
-/*!
- Test that a QWidgetAction that fires closes the menus that it is in.
-*/
-void tst_QMenu::widgetActionTriggerClosesMenu()
-{
- class ButtonAction : public QWidgetAction
- {
- public:
- ButtonAction()
- : QWidgetAction(nullptr)
- {}
-
- void click()
- {
- if (pushButton)
- pushButton->click();
- }
-
- protected:
- QWidget *createWidget(QWidget *parent)
- {
- QPushButton *button = new QPushButton(QLatin1String("Button"), parent);
- connect(button, &QPushButton::clicked, this, &QAction::trigger);
-
- if (!pushButton)
- pushButton = button;
- return button;
- }
-
- private:
- QPointer<QPushButton> pushButton;
- };
-
- QMenu menu;
- QMenu submenu;
-
- int menuTriggeredCount = 0;
- int menuAboutToHideCount = 0;
- QAction *actionTriggered = nullptr;
-
- connect(&menu, &QMenu::triggered, this, [&](QAction *action){
- ++menuTriggeredCount;
- actionTriggered = action;
- });
- connect (&menu, &QMenu::aboutToHide, this, [&](){
- ++menuAboutToHideCount;
- });
-
- QAction regularAction(QLatin1String("Action"));
- ButtonAction widgetAction;
-
- submenu.addAction(&regularAction);
- submenu.addAction(&widgetAction);
-
- menu.addMenu(&submenu);
- menu.addAction(&regularAction);
- menu.addAction(&widgetAction);
-
- menu.popup(QPoint(200,200));
- submenu.popup(QPoint(250,250));
- if (!QTest::qWaitForWindowExposed(&menu) || !QTest::qWaitForWindowExposed(&submenu))
- QSKIP("Failed to show menus, aborting test");
-
- regularAction.trigger();
- QVERIFY(menu.isVisible());
- QVERIFY(submenu.isVisible());
- QCOMPARE(menuTriggeredCount, 1);
- QCOMPARE(actionTriggered, &regularAction);
- menuTriggeredCount = 0;
- actionTriggered = nullptr;
-
- widgetAction.click();
- QVERIFY(!menu.isVisible());
- QVERIFY(!submenu.isVisible());
- QCOMPARE(menuTriggeredCount, 1);
- QCOMPARE(menuAboutToHideCount, 1);
- QCOMPARE(actionTriggered, &widgetAction);
-}
class MyMenu : public QMenu
{
--
2.25.1

View File

@ -1,280 +0,0 @@
From 4f28ec6c8526d754849bd26c55e4c5faf61f4eb0 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Thu, 14 Mar 2019 10:32:10 +0100
Subject: [PATCH 2/3] Revert "qtlite: Fix build libs with
-no-feature-regularexpression"
This reverts commit 3b514f853595c686d4ed8830567c1f27ea533faf.
---
src/corelib/kernel/qvariant.cpp | 4 ----
src/corelib/serialization/qcborvalue.cpp | 12 ------------
src/corelib/serialization/qcborvalue.h | 10 +---------
src/corelib/serialization/qjsoncbor.cpp | 7 -------
.../platforms/eglfs/api/qeglfsdeviceintegration.cpp | 4 +---
.../xcb/gl_integrations/xcb_glx/qglxintegration.cpp | 6 +-----
src/testlib/qtaptestlogger.cpp | 11 +----------
7 files changed, 4 insertions(+), 50 deletions(-)
Index: qtbase-everywhere-src-5.13.0-beta2/src/corelib/kernel/qvariant.cpp
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/corelib/kernel/qvariant.cpp
+++ qtbase-everywhere-src-5.13.0-beta2/src/corelib/kernel/qvariant.cpp
@@ -1052,13 +1052,11 @@ static bool convert(const QVariant::Priv
return false;
#ifndef QT_BOOTSTRAPPED
-#if QT_CONFIG(regularexpression)
case QMetaType::QRegularExpression:
if (d->type != QMetaType::QCborValue || !v_cast<QCborValue>(d)->isRegularExpression())
return false;
*static_cast<QRegularExpression *>(result) = v_cast<QCborValue>(d)->toRegularExpression();
break;
-#endif
case QMetaType::QJsonValue:
switch (d->type) {
case QMetaType::Nullptr:
@@ -1234,11 +1232,9 @@ static bool convert(const QVariant::Priv
case QVariant::Url:
*static_cast<QCborValue *>(result) = QCborValue(*v_cast<QUrl>(d));
break;
-#if QT_CONFIG(regularexpression)
case QVariant::RegularExpression:
*static_cast<QCborValue *>(result) = QCborValue(*v_cast<QRegularExpression>(d));
break;
-#endif
case QVariant::Uuid:
*static_cast<QCborValue *>(result) = QCborValue(*v_cast<QUuid>(d));
break;
Index: qtbase-everywhere-src-5.13.0-beta2/src/corelib/serialization/qcborvalue.cpp
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/corelib/serialization/qcborvalue.cpp
+++ qtbase-everywhere-src-5.13.0-beta2/src/corelib/serialization/qcborvalue.cpp
@@ -1772,7 +1772,6 @@ QCborValue::QCborValue(const QUrl &url)
container->elements[1].type = String;
}
-#if QT_CONFIG(regularexpression)
/*!
Creates a QCborValue object of the regular expression pattern extended type
and containing the value represented by \a rx. The value can later be retrieved
@@ -1791,7 +1790,6 @@ QCborValue::QCborValue(const QRegularExp
// change type
t = RegularExpression;
}
-#endif // QT_CONFIG(regularexpression)
/*!
Creates a QCborValue object of the UUID extended type and containing the
@@ -1945,7 +1943,6 @@ QUrl QCborValue::toUrl(const QUrl &defau
return QUrl::fromEncoded(byteData->asByteArrayView());
}
-#if QT_CONFIG(regularexpression)
/*!
Returns the regular expression value stored in this QCborValue, if it is of
the regular expression pattern extended type. Otherwise, it returns \a
@@ -1964,7 +1961,6 @@ QRegularExpression QCborValue::toRegular
Q_ASSERT(n == -1);
return QRegularExpression(container->stringAt(1));
}
-#endif // QT_CONFIG(regularexpression)
/*!
Returns the UUID value stored in this QCborValue, if it is of the UUID
@@ -2874,16 +2870,12 @@ uint qHash(const QCborValue &value, uint
return qHash(value.toDateTime(), seed);
case QCborValue::Url:
return qHash(value.toUrl(), seed);
-#if QT_CONFIG(regularexpression)
case QCborValue::RegularExpression:
return qHash(value.toRegularExpression(), seed);
-#endif
case QCborValue::Uuid:
return qHash(value.toUuid(), seed);
case QCborValue::Invalid:
return seed;
- default:
- break;
}
Q_ASSERT(value.isSimpleType());
@@ -2928,16 +2920,12 @@ static QDebug debugContents(QDebug &dbg,
return dbg << v.toDateTime();
case QCborValue::Url:
return dbg << v.toUrl();
-#if QT_CONFIG(regularexpression)
case QCborValue::RegularExpression:
return dbg << v.toRegularExpression();
-#endif
case QCborValue::Uuid:
return dbg << v.toUuid();
case QCborValue::Invalid:
return dbg << "<invalid>";
- default:
- break;
}
if (v.isSimpleType())
return dbg << v.toSimpleType();
Index: qtbase-everywhere-src-5.13.0-beta2/src/corelib/serialization/qcborvalue.h
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/corelib/serialization/qcborvalue.h
+++ qtbase-everywhere-src-5.13.0-beta2/src/corelib/serialization/qcborvalue.h
@@ -43,9 +43,7 @@
#include <QtCore/qbytearray.h>
#include <QtCore/qdatetime.h>
#include <QtCore/qcborcommon.h>
-#if QT_CONFIG(regularexpression)
-# include <QtCore/qregularexpression.h>
-#endif
+#include <QtCore/qregularexpression.h>
#include <QtCore/qstring.h>
#include <QtCore/qstringview.h>
#include <QtCore/qurl.h>
@@ -159,9 +157,7 @@ public:
explicit QCborValue(const QDateTime &dt);
explicit QCborValue(const QUrl &url);
-#if QT_CONFIG(regularexpression)
explicit QCborValue(const QRegularExpression &rx);
-#endif
explicit QCborValue(const QUuid &uuid);
~QCborValue() { if (container) dispose(); }
@@ -239,9 +235,7 @@ public:
QString toString(const QString &defaultValue = {}) const;
QDateTime toDateTime(const QDateTime &defaultValue = {}) const;
QUrl toUrl(const QUrl &defaultValue = {}) const;
-#if QT_CONFIG(regularexpression)
QRegularExpression toRegularExpression(const QRegularExpression &defaultValue = {}) const;
-#endif
QUuid toUuid(const QUuid &defaultValue = {}) const;
// only forward-declared, need split functions
@@ -386,10 +380,8 @@ public:
{ return concrete().toDateTime(defaultValue); }
QUrl toUrl(const QUrl &defaultValue = {}) const
{ return concrete().toUrl(defaultValue); }
-#if QT_CONFIG(regularexpression)
QRegularExpression toRegularExpression(const QRegularExpression &defaultValue = {}) const
{ return concrete().toRegularExpression(defaultValue); }
-#endif
QUuid toUuid(const QUuid &defaultValue = {}) const
{ return concrete().toUuid(defaultValue); }
Index: qtbase-everywhere-src-5.13.0-beta2/src/corelib/serialization/qjsoncbor.cpp
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/corelib/serialization/qjsoncbor.cpp
+++ qtbase-everywhere-src-5.13.0-beta2/src/corelib/serialization/qjsoncbor.cpp
@@ -543,19 +543,14 @@ QVariant QCborValue::toVariant() const
case Url:
return toUrl();
-#if QT_CONFIG(regularexpression)
case RegularExpression:
return toRegularExpression();
-#endif
case Uuid:
return toUuid();
case Invalid:
return QVariant();
-
- default:
- break;
}
if (isSimpleType())
@@ -719,10 +714,8 @@ QCborValue QCborValue::fromVariant(const
case QVariant::Hash:
return QCborMap::fromVariantHash(variant.toHash());
#ifndef QT_BOOTSTRAPPED
-#if QT_CONFIG(regularexpression)
case QVariant::RegularExpression:
return QCborValue(variant.toRegularExpression());
-#endif
case QMetaType::QJsonValue:
return fromJsonValue(variant.toJsonValue());
case QMetaType::QJsonObject:
Index: qtbase-everywhere-src-5.13.0-beta2/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
+++ qtbase-everywhere-src-5.13.0-beta2/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
@@ -51,9 +51,7 @@
#include <private/qguiapplication_p.h>
#include <QScreen>
#include <QDir>
-#if QT_CONFIG(regularexpression)
-# include <QRegularExpression>
-#endif
+#include <QRegularExpression>
#include <QLoggingCategory>
#if defined(Q_OS_LINUX)
Index: qtbase-everywhere-src-5.13.0-beta2/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
+++ qtbase-everywhere-src-5.13.0-beta2/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
@@ -48,9 +48,7 @@
#undef register
#include <GL/glx.h>
-#if QT_CONFIG(regularexpression)
-# include <QtCore/QRegularExpression>
-#endif
+#include <QtCore/QRegularExpression>
#include <QtGui/QOpenGLContext>
#include <QtGui/QOffscreenSurface>
@@ -724,7 +722,6 @@ void QGLXContext::queryDummyContext()
// The issue was fixed in Xcb 1.11, but we can't check for that
// at runtime, so instead assume it fixed with recent Mesa versions
// released several years after the Xcb fix.
-#if QT_CONFIG(regularexpression)
QRegularExpression versionTest(QStringLiteral("Mesa (\\d+)"));
QRegularExpressionMatch result = versionTest.match(QString::fromLatin1(mesaVersionStr));
int versionNr = 0;
@@ -734,7 +731,6 @@ void QGLXContext::queryDummyContext()
// White-listed
m_supportsThreading = true;
}
-#endif
}
if (!m_supportsThreading) {
qCDebug(lcQpaGl).nospace() << "Multithreaded OpenGL disabled: "
Index: qtbase-everywhere-src-5.13.0-beta2/src/testlib/qtaptestlogger.cpp
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/testlib/qtaptestlogger.cpp
+++ qtbase-everywhere-src-5.13.0-beta2/src/testlib/qtaptestlogger.cpp
@@ -43,9 +43,7 @@
#include "qtestresult_p.h"
#include "qtestassert.h"
-#if QT_CONFIG(regularexpression)
-# include <QtCore/qregularexpression.h>
-#endif
+#include <QtCore/qregularexpression.h>
QT_BEGIN_NAMESPACE
@@ -150,7 +148,6 @@ void QTapTestLogger::addIncident(Inciden
outputString(YAML_INDENT "---\n");
if (type != XFail) {
-#if QT_CONFIG(regularexpression)
// This is fragile, but unfortunately testlib doesn't plumb
// the expected and actual values to the loggers (yet).
static QRegularExpression verifyRegex(
@@ -211,12 +208,6 @@ void QTapTestLogger::addIncident(Inciden
YAML_INDENT "# %s\n", description);
outputString(unparsableDescription.data());
}
-#else
- QTestCharBuffer unparsableDescription;
- QTest::qt_asprintf(&unparsableDescription,
- YAML_INDENT "# %s\n", description);
- outputString(unparsableDescription.data());
-#endif
}
if (file) {

View File

@ -22,11 +22,11 @@ Change-Id: Ifbad6284483ee282ad129db54606f5d0d9ddd633
src/widgets/kernel/qwidgetwindow.cpp | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
index fbc71cd0ea..729a7f701a 100644
--- a/src/widgets/kernel/qwidgetwindow.cpp
+++ b/src/widgets/kernel/qwidgetwindow.cpp
@@ -1051,6 +1051,18 @@ void QWidgetWindow::handleTabletEvent(QTabletEvent *event)
Index: qtbase-everywhere-src-5.15.0-alpha/src/widgets/kernel/qwidgetwindow.cpp
===================================================================
--- qtbase-everywhere-src-5.15.0-alpha.orig/src/widgets/kernel/qwidgetwindow.cpp
+++ qtbase-everywhere-src-5.15.0-alpha/src/widgets/kernel/qwidgetwindow.cpp
@@ -1075,6 +1075,18 @@ void QWidgetWindow::handleTabletEvent(QT
event->setAccepted(ev.isAccepted());
}
@ -43,8 +43,5 @@ index fbc71cd0ea..729a7f701a 100644
+ }
+
if (event->type() == QEvent::TabletRelease && event->buttons() == Qt::NoButton)
qt_tablet_target = 0;
qt_tablet_target = nullptr;
}
--
2.21.0

View File

@ -1,102 +0,0 @@
From e0bf494295398cbc3ba5a84380525f9c00e3f8ad Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Thu, 14 Mar 2019 10:32:16 +0100
Subject: [PATCH 3/3] Revert "White-list more recent Mesa version for
multi-threading"
This reverts commit 97600d2c2885e667ced0926815b5a12a7f25285c.
---
.../xcb_glx/qglxintegration.cpp | 60 +++++++++++--------
1 file changed, 35 insertions(+), 25 deletions(-)
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
index ddb8f45188..41012c0b04 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
@@ -48,7 +48,6 @@
#undef register
#include <GL/glx.h>
-#include <QtCore/QRegularExpression>
#include <QtGui/QOpenGLContext>
#include <QtGui/QOffscreenSurface>
@@ -650,6 +649,32 @@ static const char *qglx_threadedgl_blacklist_renderer[] = {
0
};
+// This disables threaded rendering on anything using mesa, e.g.
+// - nvidia/nouveau
+// - amd/gallium
+// - intel
+// - some software opengl implementations
+//
+// The client glx vendor string is used to identify those setups as that seems to show the least
+// variance between the bad configurations. It's always "Mesa Project and SGI". There are some
+// configurations which don't use mesa and which can do threaded rendering (amd and nvidia chips
+// with their own proprietary drivers).
+//
+// This, of course, is very broad and disables threaded rendering on a lot of devices which would
+// be able to use it. However, the bugs listed below don't follow any easily recognizable pattern
+// and we should rather be safe.
+//
+// http://cgit.freedesktop.org/xcb/libxcb/commit/?id=be0fe56c3bcad5124dcc6c47a2fad01acd16f71a will
+// fix some of the issues. Basically, the proprietary drivers seem to have a way of working around
+// a fundamental flaw with multithreaded access to xcb, but mesa doesn't. The blacklist should be
+// reevaluated once that patch is released in some version of xcb.
+static const char *qglx_threadedgl_blacklist_vendor[] = {
+ "Mesa Project and SGI", // QTCREATORBUG-10875 (crash in creator)
+ // QTBUG-34492 (flickering in fullscreen)
+ // QTBUG-38221
+ 0
+};
+
void QGLXContext::queryDummyContext()
{
if (m_queriedDummyContext)
@@ -709,33 +734,18 @@ void QGLXContext::queryDummyContext()
}
}
- if (glxvendor && m_supportsThreading) {
- // Blacklist Mesa drivers due to QTCREATORBUG-10875 (crash in creator),
- // QTBUG-34492 (flickering in fullscreen) and QTBUG-38221
- const char *mesaVersionStr = nullptr;
- if (strstr(glxvendor, "Mesa Project") != 0) {
- mesaVersionStr = (const char *) glGetString(GL_VERSION);
- m_supportsThreading = false;
- }
+ if (glxvendor) {
+ for (int i = 0; qglx_threadedgl_blacklist_vendor[i]; ++i) {
+ if (strstr(glxvendor, qglx_threadedgl_blacklist_vendor[i]) != 0) {
+ qCDebug(lcQpaGl).nospace() << "Multithreaded OpenGL disabled: "
+ "blacklisted vendor \""
+ << qglx_threadedgl_blacklist_vendor[i]
+ << "\"";
- if (mesaVersionStr) {
- // The issue was fixed in Xcb 1.11, but we can't check for that
- // at runtime, so instead assume it fixed with recent Mesa versions
- // released several years after the Xcb fix.
- QRegularExpression versionTest(QStringLiteral("Mesa (\\d+)"));
- QRegularExpressionMatch result = versionTest.match(QString::fromLatin1(mesaVersionStr));
- int versionNr = 0;
- if (result.hasMatch())
- versionNr = result.captured(1).toInt();
- if (versionNr >= 17) {
- // White-listed
- m_supportsThreading = true;
+ m_supportsThreading = false;
+ break;
}
}
- if (!m_supportsThreading) {
- qCDebug(lcQpaGl).nospace() << "Multithreaded OpenGL disabled: "
- "blacklisted vendor \"Mesa Project\"";
- }
}
context.doneCurrent();
--
2.20.1

View File

@ -0,0 +1,31 @@
From: Fabian Vogt <fabian@ritter-vogt.de>
Subject: Fix build against OpenSSL 1.1.0
Leap 15.1 still has it and we can't switch away without breaking the world.
Index: qtbase-everywhere-src-5.15.0-rc/src/network/ssl/qsslsocket_openssl_symbols.cpp
===================================================================
--- qtbase-everywhere-src-5.15.0-rc.orig/src/network/ssl/qsslsocket_openssl_symbols.cpp
+++ qtbase-everywhere-src-5.15.0-rc/src/network/ssl/qsslsocket_openssl_symbols.cpp
@@ -373,7 +373,7 @@ DEFINEFUNC3(void, SSL_set_bio, SSL *a, a
DEFINEFUNC(void, SSL_set_accept_state, SSL *a, a, return, DUMMYARG)
DEFINEFUNC(void, SSL_set_connect_state, SSL *a, a, return, DUMMYARG)
DEFINEFUNC(int, SSL_shutdown, SSL *a, a, return -1, return)
-DEFINEFUNC(int, SSL_in_init, const SSL *a, a, return 0, return)
+DEFINEFUNC(int, SSL_in_init, SSL *a, a, return 0, return)
DEFINEFUNC(int, SSL_get_shutdown, const SSL *ssl, ssl, return 0, return)
DEFINEFUNC2(int, SSL_set_session, SSL* to, to, SSL_SESSION *session, session, return -1, return)
DEFINEFUNC(void, SSL_SESSION_free, SSL_SESSION *ses, ses, return, DUMMYARG)
Index: qtbase-everywhere-src-5.15.0-rc/src/network/ssl/qsslsocket_openssl_symbols_p.h
===================================================================
--- qtbase-everywhere-src-5.15.0-rc.orig/src/network/ssl/qsslsocket_openssl_symbols_p.h
+++ qtbase-everywhere-src-5.15.0-rc/src/network/ssl/qsslsocket_openssl_symbols_p.h
@@ -516,7 +516,7 @@ void q_SSL_set_bio(SSL *a, BIO *b, BIO *
void q_SSL_set_accept_state(SSL *a);
void q_SSL_set_connect_state(SSL *a);
int q_SSL_shutdown(SSL *a);
-int q_SSL_in_init(const SSL *s);
+int q_SSL_in_init(SSL *s);
int q_SSL_get_shutdown(const SSL *ssl);
int q_SSL_set_session(SSL *to, SSL_SESSION *session);
void q_SSL_SESSION_free(SSL_SESSION *ses);

View File

@ -1,9 +1,83 @@
-------------------------------------------------------------------
Wed May 27 08:48:52 UTC 2020 - Fabian Vogt <fvogt@suse.com>
- Add patch to avoid behaviour change causing crashes (kde#419526):
* 0001-Revert-QMenu-hide-when-a-QWidgetAction-fires-the-tri.patch
-------------------------------------------------------------------
Tue May 26 09:44:55 UTC 2020 - Callum Farmer <callumjfarmer13@gmail.com>
- Update to 5.15.0:
* No changelog available
-------------------------------------------------------------------
Wed May 20 15:38:18 UTC 2020 - Callum Farmer <callumjfarmer13@gmail.com>
- Update to 5.15.0-rc2
* No changelog available
-------------------------------------------------------------------
Wed May 6 11:26:35 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>
- Update to 5.15.0-rc:
* New bugfix release
* For the changes between 5.14.2 and 5.15.0 please see:
http://code.qt.io/cgit/qt/qtbase.git/plain/dist/changes-5.15.0/?h=5.15.0
- Drop patches, now upstream:
* 0001-QTextMarkdownImporter-fix-use-after-free-add-fuzz-ge.patch
- Add patch to fix build on Leap 15.1:
* fix-build-openssl-1.1.0.patch
-------------------------------------------------------------------
Mon Apr 27 12:45:07 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>
- Add patch to fix use-after-free (boo#1170582, CVE-2020-12267):
* 0001-QTextMarkdownImporter-fix-use-after-free-add-fuzz-ge.patch
-------------------------------------------------------------------
Fri Apr 24 07:11:04 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>
- Update to 5.15.0-beta4:
* New bugfix release
* No changelog available
-------------------------------------------------------------------
Tue Apr 14 06:47:19 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>
- Update to 5.15.0-beta3:
* New bugfix release
* No changelog available
- Add patch to fix build on Leap 15.1:
* 0001-Lower-required-version-of-OpenSSL-to-1.1.0.patch
-------------------------------------------------------------------
Tue Mar 24 12:13:29 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>
- Update to 5.15.0-beta2:
* New bugfix release
* No changelog available
-------------------------------------------------------------------
Fri Feb 28 09:58:42 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>
- Update to 5.15.0-beta1:
* New bugfix release
* No changelog available
-------------------------------------------------------------------
Wed Feb 19 10:16:14 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>
- Update to 5.15.0-alpha:
* New feature release
* For more details please see:
https://wiki.qt.io/New_Features_in_Qt_5.15
- Replace patches with single patch
0001-Don-t-white-list-recent-Mesa-versions-for-multithrea.patch:
* 0001-Revert-Blacklist-nouveau-and-llvmpipe-for-multithrea.patch
* 0002-Revert-qtlite-Fix-build-libs-with-no-feature-regular.patch:
* 0003-Revert-White-list-more-recent-Mesa-version-for-multi.patch
- Refresh 0002-Synthesize-Enter-LeaveEvent-for-accepted-QTabletEven.patch
-------------------------------------------------------------------
Mon Jan 27 13:13:57 UTC 2020 - Fabian Vogt <fabian@ritter-vogt.de>

View File

@ -1,7 +1,7 @@
#
# spec file for package libqt5-qtbase
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@ -36,23 +36,26 @@
%endif
Name: libqt5-qtbase
Version: 5.14.1
Version: 5.15.0
Release: 0
Summary: C++ Program Library, Core Components
License: LGPL-3.0-only or GPL-3.0-with-Qt-Company-Qt-exception-1.1
Group: System/Libraries
Url: https://www.qt.io
%define base_name libqt5
%define real_version 5.14.1
%define so_version 5.14.1
%define tar_version qtbase-everywhere-src-5.14.1
Source: https://download.qt.io/official_releases/qt/5.14/%{real_version}/submodules/%{tar_version}.tar.xz
%define real_version 5.15.0
%define so_version 5.15.0
%define tar_version qtbase-everywhere-src-5.15.0
Source: https://download.qt.io/official_releases/qt/5.15/%{real_version}/submodules/%{tar_version}.tar.xz
# to get mtime of file:
Source1: libqt5-qtbase.changes
Source2: macros.qt5
Source3: baselibs.conf
Source99: libqt5-qtbase-rpmlintrc
# patches 0-1000 are openSUSE and/or non-upstream(able) patches #
Patch1: 0001-Lower-required-version-of-OpenSSL-to-1.1.0.patch
Patch2: fix-build-openssl-1.1.0.patch
Patch3: 0001-Revert-QMenu-hide-when-a-QWidgetAction-fires-the-tri.patch
# PATCH-FIX-OPENSUSE disable-rc4-ciphers-bnc865241.diff bnc#865241-- Exclude rc4 ciphers from being used by default
Patch6: disable-rc4-ciphers-bnc865241.diff
Patch8: tell-the-truth-about-private-api.patch
@ -61,12 +64,9 @@ Patch10: libqt5-prioritise-gtk2-platformtheme.patch
# PATCH-FEATURE-OPENSUSE 0001-Add-remote-print-queue-support.patch fate#322052 -- Automatically recognize and allow printing to remote cups servers
Patch12: 0001-Add-remote-print-queue-support.patch
# PATCH-FIX-OPENSUSE
Patch21: 0001-Revert-Blacklist-nouveau-and-llvmpipe-for-multithrea.patch
Patch22: 0002-Revert-qtlite-Fix-build-libs-with-no-feature-regular.patch
Patch23: 0003-Revert-White-list-more-recent-Mesa-version-for-multi.patch
Patch21: 0001-Don-t-white-list-recent-Mesa-versions-for-multithrea.patch
Patch24: fix-fixqt4headers.patch
# patches 1000-2000 and above from upstream 5.14 branch #
Patch1000: 0001-QTextMarkdownImporter-fix-use-after-free-add-fuzz-ge.patch
# patches 2000-3000 and above from upstream 5.15/dev branch #
# Not accepted yet, https://codereview.qt-project.org/c/qt/qtbase/+/255384
Patch2001: 0002-Synthesize-Enter-LeaveEvent-for-accepted-QTabletEven.patch
@ -868,7 +868,8 @@ echo yes | ./configure \
-no-separate-debug-info \
-force-debug-info \
-shared \
-xkb \
-xkbcommon \
-no-bundled-xcb-xinput \
-dbus-linked \
-sm \
-no-rpath \
@ -1059,6 +1060,8 @@ chmod 644 %{buildroot}%{libqt5_docdir}/global/template/images/*.png
%{libqt5_libdir}/cmake/Qt5/
%{libqt5_libdir}/pkgconfig/Qt5Core.pc
%{libqt5_includedir}/QtCore/
%dir %{libqt5_libdir}/metatypes/
%{libqt5_libdir}/metatypes/qt5core_metatypes.json
%exclude %{libqt5_includedir}/QtCore/%{so_version}
%{libqt5_docdir}
@ -1186,6 +1189,7 @@ chmod 644 %{buildroot}%{libqt5_docdir}/global/template/images/*.png
%{libqt5_libdir}/cmake/Qt5Widgets/
%{libqt5_libdir}/pkgconfig/Qt5Widgets.pc
%{libqt5_includedir}/QtWidgets/
%{libqt5_libdir}/metatypes/qt5widgets_metatypes.json
%exclude %{libqt5_includedir}/QtWidgets/%{so_version}
%files -n libQt5Gui5
@ -1238,6 +1242,7 @@ chmod 644 %{buildroot}%{libqt5_docdir}/global/template/images/*.png
%{libqt5_includedir}/QtGui/
%{libqt5_includedir}/QtEglFSDeviceIntegration/
%{libqt5_includedir}/QtXkbCommonSupport
%{libqt5_libdir}/metatypes/qt5gui_metatypes.json
%exclude %{libqt5_includedir}/QtGui/%{so_version}
%exclude %{libqt5_includedir}/QtEglFSDeviceIntegration/%{so_version}
%exclude %{libqt5_includedir}/QtXkbCommonSupport/%{so_version}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d9d423a6e7bcf1055c0372fc029f14a6fe67dd62c67b83095cde68b60b762cf7
size 49828188

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9e7af10aece15fa9500369efde69cb220eee8ec3a6818afe01ce1e7d484824c5
size 49931940