diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-09-05 13:33:00 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-09-05 13:33:00 +0200 |
commit | fa2589bbb57eef49e11542211652d85d2e55424a (patch) | |
tree | 4c3ea1f90cbe718ce6e6564d119899c2e345bffa | |
parent | 651dd26403052f98397783927ad02e008acf0552 (diff) | |
parent | af6ac444c97ed2dc234f93fe457440c9da5482ea (diff) |
Merge remote-tracking branch 'origin/5.13.1' into 5.13
Change-Id: Ic633850940bbe17dcedc1609217a052b6f81ce4b
-rw-r--r-- | dist/changes-5.13.1 | 141 | ||||
-rw-r--r-- | doc/doc.pro | 4 | ||||
-rw-r--r-- | qmake/generators/mac/pbuilder_pbx.cpp | 5 | ||||
-rw-r--r-- | qmake/generators/unix/unixmake2.cpp | 6 | ||||
-rw-r--r-- | src/corelib/plugin/qlibrary.cpp | 2 | ||||
-rw-r--r-- | src/gui/text/qtextengine.cpp | 15 | ||||
-rw-r--r-- | tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp | 17 |
7 files changed, 177 insertions, 13 deletions
diff --git a/dist/changes-5.13.1 b/dist/changes-5.13.1 new file mode 100644 index 0000000000..2021b959aa --- /dev/null +++ b/dist/changes-5.13.1 @@ -0,0 +1,141 @@ +Qt 5.13.1 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.13.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +https://doc.qt.io/qt-5/index.html + +The Qt version 5.13 series is binary compatible with the 5.12.x series. +Applications compiled for 5.12 will continue to run with 5.13. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Important Behavior Changes * +**************************************************************************** + + - [QTBUG-76521] RCC's default compression algorithm was changed back to + Zlib, as it was in all previous releases until 5.13.0. The default will + remain Zlib for all Qt 5.x releases but will change in Qt 6.0. To + activate Zstd compression for your resources, either pass the + --compress-algo=zstd option to the rcc tool or add the XML attribute + compression-algorithm="zstd" to the <file> tags in the .qrc file. + +**************************************************************************** +* Android * +**************************************************************************** + + - [QTBUG-76293] Fix NDK r20 linking. + +**************************************************************************** +* QtCore * +**************************************************************************** + + - Global: + * [QTBUG-72073] Added the QT_NO_FLOAT16_OPERATORS macro in order to work + around a Microsoft <= VS2017 compiler bug that is exposed when using + std::bitset along with any Qt header that includes <qfloat16.h>. + + - QCborStreamReader: + * Fixed a bug that caused the QIODevice that the data was being read + from not to show the entire CBOR message as consumed. This allows the + user to consume data that may follow the CBOR payload. + + - QDeadlineTimer: + * [QTBUG-69750] Fixed integer overflows leading to immediate timeouts. + + - QStorageInfo: + * Fixed a bug that caused QStorageInfo to be unable to report all + filesystems if the options to mounted filesystems were too long (over + 900 characters, roughly), such as those found in Docker overlay + mounts. + + - QTextBoundaryFinder: + * Sentence breaking now no longer breaks between uppercase letters and + comma. This is a deviation from the Unicode specification, but + produces less surprising behavior. + + - QTimeZone: + * The IANA timezone database backend now properly follows symlinks even + when they point to variable locations like /run or /var (useful when + /etc is mounted read-only). + + - QVector: + * Fixed a regression that caused fill() not to detach, corrupting shared + copies. + +**************************************************************************** +* QtNetwork * +**************************************************************************** + + - Windows: + * Correctly emit errors when trying to reach unreachable hosts or + services + + - QNetworkAccessManager: + * Fixed QNetworkAccessManager::sendCustomRequest for Qt For WebAssembly. + +**************************************************************************** +* QtGui * +**************************************************************************** + + - [QTBUG-73231] QWindow::mapToGlobal()/mapFromGlobal() now handle windows + spanning screens correctly. + + - QImage: + * Improve loading time when loading png files that have the same size as + the target. + + - QPixmapCache: + * [QTBUG-76694][QTBUG-72523] Ignore unsafe access from non-main threads + + - Text: + * [QTBUG-76219] Fixed a bug which could cause the font cache to grow + larger than it was supposed to. + * [QTBUG-55096][QTBUG-74761] Fixed bug where regular text rendered with + a color font would always display in black. + +**************************************************************************** +* QtWidgets * +**************************************************************************** + + - QSystemTrayIcon: + * On macOS, show the icon passed into showMessage in the notification + popup + + - QDateTimeEdit: + * Use the information provided by the locale to determine the AM/PM + strings, unless they are already translated. + + - QGraphicsView: + * Ignore disabled items when setting the mouse cursor. + + - QMenu: + * Shortcuts are again shown by default in context menus, except on + macOS. They can be forced off by setting + AA_DontShowShortcutsInContextMenus to true. + + - QSplashScreen: + * On macOS, lower the splash screen when a modal dialog is shown to make + sure the user sees the dialog. + +**************************************************************************** +* Third-Party Code * +**************************************************************************** + + - Updated bundled SQLite to version 3.28.0 + - Updated QLocale's data to CLDR v35.1 + +**************************************************************************** +* qmake * +**************************************************************************** + + - [QTBUG-75653] The CONFIG value c++latest was added to select the latest + C++ standard the currently used toolchain supports. diff --git a/doc/doc.pro b/doc/doc.pro index 41ceb7ceae..802bd12222 100644 --- a/doc/doc.pro +++ b/doc/doc.pro @@ -1,6 +1,8 @@ TEMPLATE = aux -global_docs.files = $$PWD/global +global_docs.files = \ + $$PWD/global \ + $$PWD/config global_docs.path = $$[QT_INSTALL_DOCS] INSTALLS += global_docs !prefix_build:!equals(OUT_PWD, $$PWD): \ diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp index d5994639b3..1b2c68e430 100644 --- a/qmake/generators/mac/pbuilder_pbx.cpp +++ b/qmake/generators/mac/pbuilder_pbx.cpp @@ -825,6 +825,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) } if(!project->isActiveConfig("staticlib")) { //DUMP LIBRARIES + const ProStringList defaultLibDirs = project->values("QMAKE_DEFAULT_LIBDIRS"); ProStringList &libdirs = project->values("QMAKE_PBX_LIBPATHS"), &frameworkdirs = project->values("QMAKE_FRAMEWORKPATH"); static const char * const libs[] = { "LIBS", "LIBS_PRIVATE", @@ -943,8 +944,10 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) } if(slsh != -1) { const QString path = QFileInfo(library.left(slsh)).absoluteFilePath(); - if(!path.isEmpty() && !libdirs.contains(path)) + if (!path.isEmpty() && !libdirs.contains(path) + && !defaultLibDirs.contains(path)) { libdirs += path; + } } library = fileFixify(library, FileFixifyFromOutdir | FileFixifyAbsolute); QString key = keyFor(library); diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp index c326692ded..9888b4816a 100644 --- a/qmake/generators/unix/unixmake2.cpp +++ b/qmake/generators/unix/unixmake2.cpp @@ -1206,8 +1206,10 @@ void UnixMakefileGenerator::init2() project->values("QMAKE_FRAMEWORK_VERSION").append(project->first("VER_MAJ")); if (project->first("TEMPLATE") == "aux") { - project->values("PRL_TARGET") = - project->values("TARGET").first().prepend(project->first("QMAKE_PREFIX_STATICLIB")); + project->values("PRL_TARGET") = { + project->first("QMAKE_PREFIX_STATICLIB") + + project->first("TARGET") + }; } else if (!project->values("QMAKE_APP_FLAG").isEmpty()) { if(!project->isEmpty("QMAKE_BUNDLE")) { ProString bundle_loc = project->first("QMAKE_BUNDLE_LOCATION"); diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp index 3aadd1a73b..0e32776c71 100644 --- a/src/corelib/plugin/qlibrary.cpp +++ b/src/corelib/plugin/qlibrary.cpp @@ -74,7 +74,7 @@ QT_BEGIN_NAMESPACE # define QLIBRARY_AS_DEBUG true #endif -#if defined(Q_OS_UNIX) || defined(Q_CC_MINGW) +#if defined(Q_OS_UNIX) // We don't use separate debug and release libs on UNIX, so we want // to allow loading plugins, regardless of how they were built. # define QT_NO_DEBUG_PLUGIN_CHECK diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 2da13289bf..a7834587b1 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -399,6 +399,7 @@ struct QBidiAlgorithm { analysis[i].bidiDirection = (level & 1) ? QChar::DirR : QChar::DirL; runHasContent = true; lastRunWithContent = -1; + ++isolatePairPosition; } int runBeforeIsolate = runs.size(); ushort newLevel = isRtl ? ((stack.top().level + 1) | 1) : ((stack.top().level + 2) & ~1); @@ -440,21 +441,19 @@ struct QBidiAlgorithm { doEmbed(true, true, false); break; case QChar::DirLRI: - Q_ASSERT(isolatePairs.at(isolatePairPosition).start == i); doEmbed(false, false, true); - ++isolatePairPosition; break; case QChar::DirRLI: - Q_ASSERT(isolatePairs.at(isolatePairPosition).start == i); doEmbed(true, false, true); - ++isolatePairPosition; break; case QChar::DirFSI: { - const auto &pair = isolatePairs.at(isolatePairPosition); - Q_ASSERT(pair.start == i); - bool isRtl = QStringView(text + pair.start + 1, pair.end - pair.start - 1).isRightToLeft(); + bool isRtl = false; + if (isolatePairPosition < isolatePairs.size()) { + const auto &pair = isolatePairs.at(isolatePairPosition); + Q_ASSERT(pair.start == i); + isRtl = QStringView(text + pair.start + 1, pair.end - pair.start - 1).isRightToLeft(); + } doEmbed(isRtl, false, true); - ++isolatePairPosition; break; } diff --git a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp index 9c477589f9..f0a32c2ed4 100644 --- a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp +++ b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp @@ -138,6 +138,7 @@ private slots: void noModificationOfInputString(); void superscriptCrash_qtbug53911(); void showLineAndParagraphSeparatorsCrash(); + void tooManyDirectionalCharctersCrash_qtbug77819(); private: QFont testFont; @@ -2309,5 +2310,21 @@ void tst_QTextLayout::nbspWithFormat() QCOMPARE(layout.lineAt(1).textLength(), s2.length() + 1 + s3.length()); } +void tst_QTextLayout::tooManyDirectionalCharctersCrash_qtbug77819() +{ + QString data; + data += QString::fromUtf8("\xe2\x81\xa8"); // U+2068 FSI character + data += QString::fromUtf8("\xe2\x81\xa7"); // U+2067 RLI character + + // duplicating the text + for (int i = 0; i < 10; i++) + data += data; + + // Nothing to test. It must not crash in beginLayout(). + QTextLayout tl(data); + tl.beginLayout(); + tl.endLayout(); +} + QTEST_MAIN(tst_QTextLayout) #include "tst_qtextlayout.moc" |