<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/eda7ab532053bebdab947e6ecda9d0cdff3cb0b9">https://github.com/macports/macports-ports/commit/eda7ab532053bebdab947e6ecda9d0cdff3cb0b9</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit eda7ab532053bebdab947e6ecda9d0cdff3cb0b9
</span>Author: Renee Otten <reneeotten@macports.org>
AuthorDate: Sat Jun 22 09:02:19 2024 -0400
<span style='display:block; white-space:pre;color:#404040;'> qt6: update to 6.7.2
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> - use Python 3.12, LLVM 18
</span><span style='display:block; white-space:pre;color:#404040;'> - support macOS 11+
</span><span style='display:block; white-space:pre;color:#404040;'> - add new subports for QtLocation, Qt Quick Effectmaker, and QtGraphs
</span><span style='display:block; white-space:pre;color:#404040;'> - add myself as maintainer
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/66975
</span>---
_resources/port1.0/group/qt6_info-1.0.tcl | 21 +-
aqua/qt6/Portfile | 344 ++++++++++-----------
aqua/qt6/files/CVE-2023-32573-qtsvg.diff | 37 ---
aqua/qt6/files/CVE-2023-32762-qtbase.diff | 13 -
aqua/qt6/files/CVE-2023-32763-qtbase.diff | 55 ----
aqua/qt6/files/CVE-2023-33285-qtbase.diff | 70 -----
aqua/qt6/files/CVE-2023-37369-qtbase.diff | 189 -----------
aqua/qt6/files/CVE-2023-38197-qtbase.diff | 217 -------------
aqua/qt6/files/CVE-2023-51714-qtbase.diff | 86 ------
aqua/qt6/files/CVE-2024-25580-qtbase.diff | 325 -------------------
aqua/qt6/files/CVE-2024-39936-qtbase-6.7.diff | 138 +++++++++
aqua/qt6/files/patch-qtbase-fix-cmake-3.28.diff | 45 ---
aqua/qt6/files/patch-qtbase-intel_intrinsics.diff | 20 --
aqua/qt6/files/patch-qtbase-macdeployqt.diff | 33 --
aqua/qt6/files/patch-qtbase-macos_10.14_sdk.diff | 113 -------
aqua/qt6/files/patch-qtbase-memory_resource.diff | 80 -----
aqua/qt6/files/patch-qtdeclarative-xcode11.3.diff | 22 --
.../files/patch-qtmultimedia-macos_10.14_sdk.diff | 51 ---
.../patch-qtmultimedia_no_std_unary_function.diff | 31 --
.../files/patch-qtpositioning-macos_10.14_sdk.diff | 17 -
aqua/qt6/files/patch-qtspeech-macos_10.14_sdk.diff | 26 --
aqua/qt6/files/qtbase-qmake-xcode-15.patch | 59 ----
aqua/qt64/Portfile | 2 +-
23 files changed, 328 insertions(+), 1666 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/qt6_info-1.0.tcl b/_resources/port1.0/group/qt6_info-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 94c500c0bbd..c9df0b05c72 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/qt6_info-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/qt6_info-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -35,7 +35,8 @@ namespace eval qt6 {}
</span> # please keep in order with the most recent Qt and OS versions with the lowest indices
#
set qt6::available_versions {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- qt6 {6.4 {21 20 19 18}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ qt6 {6.7 {23 22 21 20}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ qt64 {6.4 {23 22 21 20 19 18}}
</span> }
####################################################################################################################################
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -308,6 +309,24 @@ array set qt6::components {
</span> libexec/qt6/lib/QtQuick3DPhysics.framework/QtQuick3DPhysics
""
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ qtlocation {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 7.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ libexec/qt6/lib/QtLocation.framework/QtLocation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ qtquickeffectmaker {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 7.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /opt/local/libexec/qt6/qml/QtQuickEffectMaker/defaultnodes/basic/brightness_contrast.qen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ qtgraphs {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 7.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ libexec/qt6/lib/QtGraphs.framework/QtGraphs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> sqlite-plugin {
6.0
7.0
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/Portfile b/aqua/qt6/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 7259d7a2696..a0d02be1ab0 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/aqua/qt6/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -8,22 +8,24 @@ PortGroup compiler_blacklist_versions 1.0
</span> name qt6
categories aqua
<span style='display:block; white-space:pre;background:#ffe0e0;'>-platforms {macosx >= 18} ; # upon change, please update qt6 PG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-maintainers {mcalhoun @MarcusCalhoun-Lopez} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms {macosx >= 20} ; # upon change, please update qt6 PG
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers {mcalhoun @MarcusCalhoun-Lopez} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {reneeotten @reneeotten} openmaintainer
</span>
# for OpenSSLException, see source and header files in src/network/ssl of qtbase
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# see also https://doc.qt.io/qt-6.4/qtnetwork-index.html#licenses-and-attributions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# see also https://doc.qt.io/qt-6.7/qtnetwork-index.html#licenses-and-attributions
</span> license {LGPL-3 GPL-3 OpenSSLException}
homepage https://www.qt.io
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version 6.4.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 6.7.2
</span>
# get Qt's version numbers
set branch [join [lrange [split ${version} .] 0 1] .]
set qt_major [lindex [split ${version} .] 0]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# see https://www.qt.io/blog/qt-6.0-released
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# see https://www.qt.io/blog/qt-6.7-released
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.c_standard 2011
</span> compiler.cxx_standard 2017
# qcompilerdetection.h emits:
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -43,15 +45,15 @@ supported_archs arm64 x86_64
</span> # conflict with all other versions of qt6
foreach {qt_base qt_info} ${qt6::available_versions} {
if { ${qt_base} ne ${name} } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- conflicts-append port:${qt_base}-qtbase
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ conflicts-append ${qt_base}-qtbase
</span> }
}
# MacPorts LLVM/Clang version to use when required
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set llvm_version 17
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set llvm_version 18
</span>
# MacPorts Python branch & version to use when required
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set python_branch 3.11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_branch 3.12
</span> set python_version [join [split ${python_branch} .] ""]
############################################################################### Modules Not Considered
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -63,7 +65,7 @@ set python_version [join [split ${python_branch} .] ""]
</span>
############################################################################### Qt Dependencies
#
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://code.qt.io/cgit/qt/qt5.git/tree/.gitmodules?h=6.4.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://code.qt.io/cgit/qt/qt5.git/tree/.gitmodules?h=6.7.0
</span> #
###############################################################################
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -85,15 +87,15 @@ set python_version [join [split ${python_branch} .] ""]
</span> # license replacement
# }
#
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# module info found at https://doc.qt.io/qt-6.4/qtmodules.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# module info found at https://doc.qt.io/qt-6.7/qtmodules.html
</span> #
###############################################################################
array set modules {
qtbase {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 3cadb6bd4cefcb2db1f47e780520d3f3d863fa1d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 5087c9e5b0165e7bc3c1a4ab176b35d0cd8f52636aea903fa377bdba00891a60
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 48078536
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4dbc3cad86d53186a94ab817ed8161e61d4a124a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ c5f22a5e10fb162895ded7de0963328e7307611c688487b5d152c9ee64767599 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 49364504
</span> }
""
"port:brotli path:bin/dbus-daemon:dbus port:double-conversion port:freetype
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -106,14 +108,14 @@ array set modules {
</span> "Qt OpenGL" "Qt Platform Headers" "Qt Print Support" "Qt XML"}
""
"variant overrides: "
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "revision 6"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "revision 0"
</span> "License: "
}
qtsvg {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 2a021623559aca5a8d23298544b3d32fd8597e42
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 88315f886cf81898705e487cedba6e6160724359d23c518c92c333c098879a4a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1726464
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 22f33e4e75d55ed9ea3eeeae3eca19640936a322 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fb0d1286a35be3583fee34aeb5843c94719e07193bdf1d4d8b0dc14009caef01 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1791468
</span> }
""
"port:zlib"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -121,14 +123,14 @@ array set modules {
</span> {"Qt SVG"}
""
"variant overrides: "
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "revision 1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "revision 0"
</span> "License: "
}
qtdeclarative {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 91fafeb58501d02b49a9d97ff39759cb82ccaad9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 67ded1b3b988135e3600916b34bb156fe3986c88420c6f87a6d0fd53521ba795
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 30556972
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ c723a2abaaae49a44c3e7a9d749367eda85c512f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4c29cba1af8c42d425d8eb6e01bad24cb80f4b983d71eef566a0542dfdb9b999 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 35629324
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -141,9 +143,9 @@ array set modules {
</span> }
qtmultimedia {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- c085075a84da5e9d9fa8b613dcdc318138ef10da
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a4a72469e12da1e59ee032ab2e6677d620a5663c354d0ba88906d2bec1567d00
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 5941312
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a50c11eac72ccc7485bd7af7db39424273bfe58b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 8ef835115acb9a1d3d2c9f23cfacb43f2c537e3786a8ab822299a2a7765651d3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 8451800
</span> }
""
"path:lib/libavcodec.dylib:ffmpeg port:pulseaudio"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -151,14 +153,14 @@ array set modules {
</span> {"Qt Multimedia"}
""
"variant overrides: "
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "revision 1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "revision 0"
</span> "License: "
}
qttools {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 047a22392a4f500c6bf70c50432e16543e7505f0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 867df829cd5cd3ae8efe62e825503123542764b13c96953511e567df70c5a091
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 8738280
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ e182f7a868d3ddb5bbd1fbec72a953dbd4007aa3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 58e855ad1b2533094726c8a425766b63a04a0eede2ed85086860e54593aa4b2a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 9019636
</span> }
""
"port:clang-${llvm_version}"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -166,14 +168,14 @@ array set modules {
</span> {"Qt Designer" "Qt Help" "Qt UI Tools"}
""
"variant overrides: "
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "revision 1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "revision 0"
</span> "License: "
}
qttranslations {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 47f6a8448cc96dc28119aa2748ac42130a12c2c8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 79e56b7800d49649a8a8010818538c367a829e0b7a09d5f60bd3aecf5abe972c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1466828
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ eab4065f224be17611b7c21b6c88382133d6a77e \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 9845780b5dc1b7279d57836db51aeaf2e4a1160c42be09750616f39157582ca9 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1547608
</span> }
"port:qt6-qttools"
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -181,14 +183,14 @@ array set modules {
</span> {"translation files"}
""
"variant overrides: ~examples ~tests ~debug noarch ~docs"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "revision 1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "revision 0"
</span> "License: "
}
qtdoc {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- b39c76dbcb6159b392ad9348146d39befda2da59
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 73eac34dd629f629ca8cf5827c165b476e834731bb8262c937bc57eef4128183
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 8633284
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 52576e20b5ee4b5a9b4ef0310bd68a99089df0d8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ a0c1456cb66dc76065f287e4a607510854bb794141dd18fe7f7db9954587756d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 14497164
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -199,11 +201,26 @@ array set modules {
</span> "revision 0"
"License: "
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ qtlocation {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 7751af00292fd3387ffaa76d347b91de8a6f5860 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f232da58bf1189b69f1f7029417ddfeffcfb801b275aedc720e38244f88a485d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3166188
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "qtbase qtpositioning qtdeclarative"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {"Qt Location"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "status = preview"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "variant overrides: "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "revision 0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "License: "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> qtpositioning {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 11046a934c31c916822b01d60b4e5975153ffcdd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b218b1e1d37c12e2935ae90600d8b42ef68f90617fe8677ec89f0b0f05bcd70c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1494352
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ e62debaa82f6210166d87a4620c4942a6a6db53c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 020009f0aa8f6b1042963a45b6e19f2784cc937949cdb673f3b876153e087b1c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 658112
</span> }
""
"port:gconf"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -216,9 +233,9 @@ array set modules {
</span> }
qtsensors {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 15373f978e5dd1f3b2b09e53646ae8a734b26fcb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 5f3964fa2889456736a0bdf07221105fd67853539496e2d3ba2f380a47babc48
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2106700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 62407675be7309e4b04acbf15d0df6e1ac345992 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ead1dec787c56ed4dc02ed810af54ff1e1f6875cb5cc2506c74eeb9554e6bb59 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1497432
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -231,9 +248,9 @@ array set modules {
</span> }
qtconnectivity {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- df9e16e8b99e00f7261587a3acf582d65f8f1bc9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- f98c2014cc4ab7ed69e762ecddd2433b95468942bb1612f648a7e9c94ba44c9d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1108992
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cc20d05f3c5ea5ba28a3cb568d180dfa96e3954d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 8ed321b242f0e956473a295fa31670271f9b3acb797508644cb740f89f6c08e8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1061952
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -246,9 +263,9 @@ array set modules {
</span> }
qt3d {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 819f7dd13b6e6d8ceb0ae96399d36aa43a970698
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- a88225f997253d1605afced4eaac5c2c4b368fd90cd5e076a90bd7d1b2ae3d71
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 104002896
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6e3eb85d5db74b2e0e0f619181fb0852c323d1b7 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 8bc087d904973133186e58471845c5df376bbfdcfcf079fda287e1cda27c8adf \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 141589248
</span> }
""
"port:assimp"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -261,9 +278,9 @@ array set modules {
</span> }
qtimageformats {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- a95630b7d6b920d22a3726b8607690359a724e83
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 0aff58062e74b84617c5da8325d8cdad5368d8f4d2a11ceafcd58329fe99b798
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1962440
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ e6f8cd5ea11686ca70a0d07c14216ba6f9f63e85 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ e1a1d8785fae67d16ad0a443b01d5f32663a6b68d275f1806ebab257485ce5d6 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1974768
</span> }
""
"path:lib/pkgconfig/jasper.pc:jasper port:libmng port:tiff port:webp"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -276,9 +293,9 @@ array set modules {
</span> }
qtserialbus {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 0f962f4b8152df25f8d66eb24b4c41c7bb7f8c10
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- b6446a7516d1f04e561c00f9c50ce4d39dad72150f067722ba759f00b4b34366
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 381036
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b70f91b4de2c3f1e98952b3f0c486e21ffb9882f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 67641ca99b455746d7d956c516dfaa5f2c48696834c71d5720d63e736d374b2b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 547596
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -291,9 +308,9 @@ array set modules {
</span> }
qtserialport {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 9dcb75b488458cc4a07999ce5768839e00018300
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 5f97ad9067efa39a8a2a39fbbc1e03d2191f305733d9c2f3060f8017ecfc95de
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 319400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fac4def632d16259b58a103efd1c5a887aead699 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 21c34cd1161cb5197bcec662d26a17647b59b6fdff5c364576883c42dbd3b4fc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 271320
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -306,9 +323,9 @@ array set modules {
</span> }
qtwebsockets {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 7ac6871f10d33b08abd745d5c0cebaac45a745bd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- de27357eb55c5e83ae560371d7f76b36b5b2ba85caf8965c527f1d5d4b8d458f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 267624
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f2920d67388ddea44d071891326df9bf1b427ad3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5bde4af6ec9ce8c8632b782ab77b82d910721be2c714e6d38902521bcd1d215f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 459636
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -321,9 +338,9 @@ array set modules {
</span> }
qtwebchannel {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 5cc690a6fa4e1449b2e496a868522a922023bb5f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- e955044587f0e74a64c88bbbe4d6be9fd869ac89d66a96cce4752756bcbef3a8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 213316
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5dfe524cd7d0128e26cc9f3f0235230457e75735 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ac5d96607b10e7de546eaf93bb9f65c0fd631ef9b91ef8a794e26fd57db4501c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 206584
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -336,11 +353,11 @@ array set modules {
</span> }
qtwebengine {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 80e059ab1380234fa324888d9b1c3c4009c908c8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 55f85af736a1dc79a41b8d95014ba27d8fce0be44293a69e64fece7fa12b2925
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 440562844
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 7edc767b416d42e1aed55ab3d3ff7ea645666462 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ c7755875594d8be382b07bf3634d44fd77012805794d8b588891709a6405ffd1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 550888844
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "path:bin/node:nodejs20 port:python${python_version} port:py${python_version}-html5lib"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "path:bin/node:nodejs20 port:python${python_version} port:py${python_version}-html5lib port:py${python_version}-ply"
</span> "port:re2 path:lib/pkgconfig/icu-uc.pc:icu port:webp \
port:libopus path:lib/libavcodec.dylib:ffmpeg path:lib/pkgconfig/vpx.pc:libvpx \
port:snappy path:lib/pkgconfig/glib-2.0.pc:glib2 port:zlib port:minizip port:libevent \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -355,9 +372,9 @@ array set modules {
</span> }
qtwebview {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 7d53b1a1189db57431daf83e21d6a33eca0945f7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 51951770495e142d8952827b4e1d28565d2cb00fce652dae6eddd9425cf3e843
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 139820
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f5837d43e30530c5567be3b53da053783115b4e1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4ce1096903d4fec39bfcd95d4015acbf105eddf66a384303cb0fe899dd24e4fe \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 138764
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -370,9 +387,9 @@ array set modules {
</span> }
qtcharts {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 991ea524f2d8b66ce5bee6570cb186c573d963a7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 4a61e4f5ffb55df69fc58f88255aabca44fb51935b180c03ab81e098d437c346
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 4386856
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 56238c19fd7fab4b10b719a287bab3b6366a9645 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 00f6a437458b7f2c4e81d748dbe2a077567a9e6ad8d8e3820b36c39dc5279bda \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4661448
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -385,9 +402,9 @@ array set modules {
</span> }
qtdatavis3d {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 2f8650abed7a1c7bd984275856c5fd6ea85b137a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- c978ac5db663560b8071ddf62e7d7e82e0c01d109d9292171f5589ce5e787995
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 5216376
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ea81be1551363d00245c1e75d1685ee78f075872 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ c0ebc87d95deb595106fc68ed7e6de05149a18917d68cff40905c57fc6694e53 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3947856
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -400,9 +417,9 @@ array set modules {
</span> }
qtvirtualkeyboard {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 53c7929d232eeee86ba89d28381e80401c2022b1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 3f4685226f5b00e65c8b304a47dd96c7d9b843649fba6e75421d055825de0ee5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 3723096
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0e065e42c34bc33cd24be199ba1aa4b44762601b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 320664b55a0960ff79c1b822dcf6e8cebe3e08b791147d41b570996d81ce180f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3722296
</span> }
""
"port:hunspell"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -415,9 +432,9 @@ array set modules {
</span> }
qtscxml {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 25d44a78d1eb9e3efa4492823d3c126e85b51c1f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fe722c016d434c02e713e3c7d5d4a845998efe69d8b645923e83f1f4f7b72f3a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1783744
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 9b7b4f59991fd9f3a12ef4275a573ffc31c7476a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 20ecf93506d48f27b492ad3dd9d88830e08d642faec3071ce53396a8ae05c86f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1168452
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -430,9 +447,9 @@ array set modules {
</span> }
qtspeech {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 365368ee5fe0e50a8fe374d39a8a6323dbfbb995
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 79e0d0195e0a061d384a46eef96ca604e3814043d1a9903f63b3cfc985254ae2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 219444
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bf057d7c5e9df6b7a1eb8a40d510a996cdf5e293 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cc8c769404e3e49713be304a73f936890a1ef2f88d590732785f34692a4814ce \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 262360
</span> }
""
"port:flite"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -445,9 +462,9 @@ array set modules {
</span> }
qtnetworkauth {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 88985827d6cab812578506e59cb085717f80d79a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 4d115ba572f4b8c8fbb64f4c26a40723556d252bd337a643f2266f19c7716ae5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 145000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bbda190e9cf285ab7545f2eba68df8621a9370e2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 7f09824fcfe589eb32260c305ff9a126fe3bf93be218d372e8e9c10e212df470 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 146892
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -460,9 +477,9 @@ array set modules {
</span> }
qtremoteobjects {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- abb63a30db6d355274412817c565305d852ff567
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 9c9447df79cba249191d8628b6a6910658a7882d14114977f5d69c69440c186a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 366136
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 9574d4e4957cee808db8fdbae2a7a6bc3648f49a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0b906b81aa7d6f4e47d4a298da67894433f3096a06f4c4237788c1b2cb9b7483 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 537040
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -475,9 +492,9 @@ array set modules {
</span> }
qtlottie {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- b2a3b0a303a549388c838720fb93bc4c356ece4f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ff6c52e04566ecadee351eb3b803237bf07d417e4bb27d2122a5879618f1693d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 91844
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 9963ba8fa95b238d3aac6b65da42db2de4eddf67 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d9afbc9358d352a4e521d4693d5bdad6a004272b6e8a9ec7a9f851700fe3f10e \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 83636
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -490,9 +507,9 @@ array set modules {
</span> }
qtquicktimeline {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 387c316629a5c555f1e3719959a70619d6f8e5c6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 3808c447c3a3af98c797f12f38d3c371c628c35d34123ce7a7e1f580e55e3da5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 113348
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0ef60aa29e115d595ec5c0ad1ea7c659a33b6659 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 21eddea01cf095cede10362eea4fb8402ffd06868c88d50a757c8c1f6b0719eb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 110200
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -505,9 +522,9 @@ array set modules {
</span> }
qtquick3d {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 17030605c5065bd1a481f8495f11f50599a47cb4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 78a38d565d449b939ffd1b30cacd5ba3e1b97c7a8c0a02fefc810ed5d4dc8050
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 44048520
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ df0f539fc7f8f8bd0586fc965ae23fe6556382fa \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bb8ff9aec6da2e2d3b3986cc859333a98b2f3d4bbe564c5733e8f1a089d15270 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 66202160
</span> }
""
"port:assimp"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -520,9 +537,9 @@ array set modules {
</span> }
qtshadertools {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 488113b3273e2ec486abba0a5495a5916ff80575
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- c648b74ce3e769a20bd62792a589c540bceacfedf2f38fc7273d2c39782768f8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1001780
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 34cc71dcd91b5ab0a05215e8aec928185b159c8f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ edfa34c0ac8c00fcaa949df1d8e7a77d89dadd6386e683ce6c3e3b117e2f7cc1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1111256
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -535,9 +552,9 @@ array set modules {
</span> }
qt5compat {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 53ae2a93d8568314c696776311650901e563b3c6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- d4b249abb823d575eee9045c24d924ba8d1276e6be7735b287689991d998aa7a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 14638428
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d84116782d286c12ad10abae6d195c7ac0a96708 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 8826b5189efc4d9bdb64fdb1aa89d0fdf4e53c60948ed7995621ed046e38c003 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 14632348
</span> }
""
"path:lib/pkgconfig/icu-uc.pc:icu port:libiconv"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -545,14 +562,14 @@ array set modules {
</span> {"Qt 5 Core Compatibility APIs"}
"status = deprecated"
"variant overrides: "
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "revision 2"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "revision 0"
</span> "License: "
}
qtlanguageserver {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- f03552565c952d8c97fc77760966e4b9d6059ef7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 0e881006442e19c7c4a6d229c342cc685142568e2b41f843e73cddf4c3d37975
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 153856
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 924f60b0fd6e1cc8a5f6cb2d11f094dd34979e61 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b659fe655144ffa061e3ae509eadb42ae373230517295a96935434340e101a92 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 145660
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -565,9 +582,9 @@ array set modules {
</span> }
qthttpserver {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 1fbd0194e5be04caa30d2c04cec81e719eda0c58
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- c37adcadc779b972ceecd739717c4cc3b90487c3387c61eaf2aa94daaf30c179
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 121772
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ b248b0f951756bf784ab820bdc07821348205455 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0353b9b4f98a83fec8f15046d4ff9d6ef7c874dcbb3664092fe2508f40778b86 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 163640
</span> }
""
""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -580,15 +597,45 @@ array set modules {
</span> }
qtquick3dphysics {
{
<span style='display:block; white-space:pre;background:#ffe0e0;'>- 312ff38521a1ce290aaa0c1f9bc44799ea2ecd4e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ab86e8a3c44c31082022259375e7984f9955f81e9de2c846cef563c7562ddb15
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2965840
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f6255e24e607d1979b9de5e09d23fae92e4733a0 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ffc790b8b44ebc03acc1f2d085dad0cc49fffde1eea941a6ff11d3eb0b6e4140 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4703956
</span> }
""
""
"qtbase qtdeclarative qtquick3d qtshadertools"
{"Qt Quick 3D Physics"}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- "status = preview; GPLv3 license only"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "GPLv3 license only"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "variant overrides: "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "revision 0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "License: {GPL-3 OpenSSLException}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ qtquickeffectmaker {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 5e531ba2ff923a2205399e37976218de03635165 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3b0f26ce07c82c29f28d19b537b31c297799406428fbf0d31911464e717b756d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4358544
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "qtbase qtdeclarative qtquick3d qtshadertools"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {"Qt Quick Effects"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "variant overrides: "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "revision 0"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ qtgraphs {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 8502878c5e6fb303f3947282e936093b7447ca04 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d8813a266e4a56367af6c3206670c908f64794e6806402142b2e028046128600 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4395960
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "qtbase qtdeclarative qtquick3d"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {"Qt Graphs"}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "status = preview"
</span> "variant overrides: "
"revision 0"
"License: {GPL-3 OpenSSLException}"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -943,10 +990,6 @@ foreach {driver driver_info} [array get sql_plugins] {
</span> ###############################################################################
# Special Cases
###############################################################################
<span style='display:block; white-space:pre;background:#ffe0e0;'>-subport ${name}-qtdeclarative {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append patch-qtdeclarative-xcode11.3.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> subport ${name}-qttools {
configure.env-append LLVM_INSTALL_DIR=${prefix}/libexec/llvm-${llvm_version}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -980,81 +1023,33 @@ if { ${subport} in [list "${name}-qtwebengine" "${name}-qtwebengine-docs"] } {
</span> subport ${name}-qtwebengine {
# manually install icudtl.dat
post-destroot {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- xinstall -m 644 ${worksrcpath}/src/3rdparty/chromium/third_party/icu/common/icudtl.dat \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ${destroot}${qt6.dir}/lib/QtWebEngineCore.framework/Resources/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -m 0644 ${worksrcpath}/src/3rdparty/chromium/third_party/icu/common/icudtl.dat \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${qt6.dir}/lib/QtWebEngineCore.framework/Resources/
</span> }
}
subport ${name}-qtmultimedia {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append patch-qtmultimedia-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # GStreamer will be found if gstreamer1 and gstreamer1-gst-plugins-base are installed
# however, an error will ensue since the GStreamer support requires "Linux DMA buffer support"
# see
# https://code.qt.io/cgit/qt/qtmultimedia.git/tree/src/plugins/multimedia/gstreamer/CMakeLists.txt
# https://code.qt.io/cgit/qt/qtmultimedia.git/tree/src/multimedia/configure.cmake
configure.args-append -no-gstreamer
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # std::unary_function removed in Xcode clang 15
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append patch-qtmultimedia_no_std_unary_function.diff
</span> }
subport ${name}-qt5compat {
patchfiles-append patch-qt5compat-find_libs.diff
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-subport ${name}-qtsvg {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append CVE-2023-32573-qtsvg.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> subport ${name}-qtspeech {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append patch-qtspeech-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # ALSA is Linux only (https://www.alsa-project.org/wiki/Main_Page)
# Speech Dispatcher *might* be made to work on macOS (https://freebsoft.org/speechd)
configure.args-append -no-flite-alsa \
-no-speechd
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-subport ${name}-qtpositioning {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append patch-qtpositioning-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> if { ${subport} eq "${name}-qtbase" || ${subport} eq "${name}-qtbase-docs" } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append {*}{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2023-32762-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2023-32763-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2023-33285-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2023-37369-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2023-38197-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2023-51714-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- CVE-2024-25580-qtbase.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # allow building with macOS 10.14 SDK
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # see https://trac.macports.org/ticket/64345
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append patch-qtbase-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # error: no matching function for call to '_mm256_maskz_cvtps_ph'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # note: candidate function not viable: requires 2 arguments, but 3 were provided
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # see https://trac.macports.org/ticket/67802
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append patch-qtbase-intel_intrinsics.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # see https://trac.macports.org/ticket/68204
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append qtbase-qmake-xcode-15.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # see https://trac.macports.org/ticket/67980
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append patch-qtbase-memory_resource.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Fixes deploying application libraries with .so extension.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # glib gio modules, this also applies to gstreamer since macports
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # currently uses an older version of gstreamer which uses .so
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # extensions for plugins.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # see https://codereview.qt-project.org/c/qt/qtbase/+/507393
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append patch-qtbase-macdeployqt.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # see https://trac.macports.org/ticket/68713
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles-append patch-qtbase-fix-cmake-3.28.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ patchfiles-append CVE-2024-39936-qtbase-6.7.diff
</span>
configure.pre_args-replace --prefix=${prefix} \
"-prefix ${qt6.dir}"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1073,8 +1068,7 @@ if { ${subport} eq "${name}-qtbase" || ${subport} eq "${name}-qtbase-docs" } {
</span> # use -Oz instead of -O2
configure.args-append -optimize-size
<span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.args-append -no-testcocoon \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- -pkg-config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append -pkg-config
</span>
# Third Party Libraries:
configure.args-append -system-zlib \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1187,7 +1181,7 @@ subport ${name}-qtbase {
</span> reinplace "s|${prefix}/bin/cmake|/Applications/CMake.app/Contents/bin/cmake|g" \
${destroot}${qt6.dir}/bin/qt-cmake
reinplace "s|${prefix}/bin/cmake|/Applications/CMake.app/Contents/bin/cmake|g" \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ${destroot}${qt6.dir}/bin/qt-cmake-private
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ${destroot}${qt6.dir}/bin/qt-cmake-create
</span>
if { "${qt6.dir}" ne "${prefix}" } {
# Add dummy cmake find modules that forward to the real ones
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-32573-qtsvg.diff b/aqua/qt6/files/CVE-2023-32573-qtsvg.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 4e9fe95bd4f..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-32573-qtsvg.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,37 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/svg/qsvgfont_p.h | 5 ++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/svg/qsvghandler.cpp | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2 files changed, 3 insertions(+), 4 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/svg/qsvgfont_p.h.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/svg/qsvgfont_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -38,6 +38,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Q_SVG_PRIVATE_EXPORT QSvgFont : public QSvgRefCounted
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ static constexpr qreal DEFAULT_UNITS_PER_EM = 1000;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QSvgFont(qreal horizAdvX);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void setFamilyName(const QString &name);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -50,9 +51,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void draw(QPainter *p, const QPointF &point, const QString &str, qreal pixelSize, Qt::Alignment alignment) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QString m_familyName;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qreal m_unitsPerEm;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qreal m_ascent;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qreal m_descent;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qreal m_unitsPerEm = DEFAULT_UNITS_PER_EM;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- qreal m_horizAdvX;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QHash<QChar, QSvgGlyph> m_glyphs;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/svg/qsvghandler.cpp.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/svg/qsvghandler.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2622,7 +2622,7 @@ static bool parseFontFaceNode(QSvgStyleP
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- qreal unitsPerEm = toDouble(unitsPerEmStr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (!unitsPerEm)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- unitsPerEm = 1000;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ unitsPerEm = QSvgFont::DEFAULT_UNITS_PER_EM;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (!name.isEmpty())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- font->setFamilyName(name);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-32762-qtbase.diff b/aqua/qt6/files/CVE-2023-32762-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 2d707fdb5c1..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-32762-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,13 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/network/access/qhsts.cpp.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/network/access/qhsts.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -364,8 +364,8 @@ quoted-pair = "\" CHAR
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool QHstsHeaderParser::parse(const QList<QPair<QByteArray, QByteArray>> &headers)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for (const auto &h : headers) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // We use '==' since header name was already 'trimmed' for us:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (h.first == "Strict-Transport-Security") {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // We compare directly because header name was already 'trimmed' for us:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (h.first.compare("Strict-Transport-Security", Qt::CaseInsensitive) == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- header = h.second;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // RFC6797, 8.1:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- //
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-32763-qtbase.diff b/aqua/qt6/files/CVE-2023-32763-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 858292eab21..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-32763-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,55 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/painting/qfixed_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/painting/qfixed_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -18,6 +18,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <QtGui/private/qtguiglobal_p.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "QtCore/qdebug.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "QtCore/qpoint.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include "QtCore/qnumeric.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "QtCore/qsize.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QT_BEGIN_NAMESPACE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -136,6 +137,22 @@ constexpr inline QFixed operator+(uint i, QFixed d) { return d+i; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constexpr inline QFixed operator-(uint i, QFixed d) { return -(d-i); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // constexpr inline QFixed operator*(qreal d, QFixed d2) { return d2*d; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+inline bool qAddOverflow(QFixed v1, QFixed v2, QFixed *r)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int val;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool result = qAddOverflow(v1.value(), v2.value(), &val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ r->setValue(val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+inline bool qMulOverflow(QFixed v1, QFixed v2, QFixed *r)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int val;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool result = qMulOverflow(v1.value(), v2.value(), &val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ r->setValue(val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifndef QT_NO_DEBUG_STREAM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- inline QDebug &operator<<(QDebug &dbg, QFixed f)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- { return dbg << f.toReal(); }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/text/qtextlayout.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/text/qtextlayout.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2105,11 +2105,14 @@ found:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- eng->maxWidth = qMax(eng->maxWidth, line.textWidth);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- eng->minWidth = qMax(eng->minWidth, lbh.minw);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- eng->maxWidth += line.textWidth;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(eng->maxWidth, line.textWidth, &eng->maxWidth))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eng->maxWidth = QFIXED_MAX;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (line.textWidth > 0 && item < eng->layoutData->items.size())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- eng->maxWidth += lbh.spaceData.textWidth;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (line.textWidth > 0 && item < eng->layoutData->items.size()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(eng->maxWidth, lbh.spaceData.textWidth, &eng->maxWidth))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ eng->maxWidth = QFIXED_MAX;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- line.textWidth += trailingSpace;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (lbh.spaceData.length) {
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-33285-qtbase.diff b/aqua/qt6/files/CVE-2023-33285-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 2ff50916667..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-33285-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,70 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://codereview.qt-project.org/c/qt/qtbase/+/477644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/network/kernel/qdnslookup_unix.cpp.orig 2023-04-24 08:43:14
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/network/kernel/qdnslookup_unix.cpp 2023-06-07 08:58:04
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -227,7 +227,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // responseLength in case of error, we still can extract the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // exact error code from the response.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- HEADER *header = (HEADER*)response;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const int answerCount = ntohs(header->ancount);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- switch (header->rcode) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case NOERROR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -260,18 +259,31 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- // Skip the query host, type (2 bytes) and class (2 bytes).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- char host[PACKETSZ], answer[PACKETSZ];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- unsigned char *p = response + sizeof(HEADER);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- int status = local_dn_expand(response, response + responseLength, p, host, sizeof(host));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (status < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ int status;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (ntohs(header->qdcount) == 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // Skip the query host, type (2 bytes) and class (2 bytes).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ status = local_dn_expand(response, response + responseLength, p, host, sizeof(host));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (status < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ reply->error = QDnsLookup::InvalidReplyError;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ reply->errorString = tr("Could not expand domain name");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if ((p - response) + status + 4 >= responseLength)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ header->qdcount = 0xffff; // invalid reply below
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ p += status + 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (ntohs(header->qdcount) > 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- reply->error = QDnsLookup::InvalidReplyError;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- reply->errorString = tr("Could not expand domain name");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ reply->errorString = tr("Invalid reply received");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- p += status + 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Extract results.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const int answerCount = ntohs(header->ancount);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int answerIndex = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- while ((p < response + responseLength) && (answerIndex < answerCount)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- status = local_dn_expand(response, response + responseLength, p, host, sizeof(host));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -283,6 +296,11 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const QString name = QUrl::fromAce(host);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- p += status;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if ((p - response) + 10 > responseLength) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // probably just a truncated reply, return what we have
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const quint16 type = (p[0] << 8) | p[1];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- p += 2; // RR type
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- p += 2; // RR class
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -290,6 +308,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- p += 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const quint16 size = (p[0] << 8) | p[1];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- p += 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if ((p - response) + size > responseLength)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return; // truncated
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (type == QDnsLookup::A) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (size != 4) {
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-37369-qtbase.diff b/aqua/qt6/files/CVE-2023-37369-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 743785f0cf9..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-37369-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,189 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream.cpp b/src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 72c33584a98..598b9f0428f 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1245,7 +1245,9 @@ inline qsizetype QXmlStreamReaderPrivate::fastScanContentCharList()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--inline qsizetype QXmlStreamReaderPrivate::fastScanName(qint16 *prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// Fast scan an XML attribute name (e.g. "xml:lang").
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+inline QXmlStreamReaderPrivate::FastScanNameResult
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+QXmlStreamReaderPrivate::fastScanName(Value *val)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- qsizetype n = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- uint c;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1253,7 +1255,8 @@ inline qsizetype QXmlStreamReaderPrivate::fastScanName(Value *val)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (n >= 4096) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // This is too long to be a sensible name, and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // can exhaust memory, or the range of decltype(*prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raiseNamePrefixTooLongError();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return {};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- switch (c) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case '\n':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1282,23 +1285,23 @@ inline qsizetype QXmlStreamReaderPrivate::fastScanName(qint16 *prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case '+':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case '*':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- putChar(c);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (prefix && *prefix == n+1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- *prefix = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (val && val->prefix == n + 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ val->prefix = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- putChar(':');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- --n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return FastScanNameResult(n);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case ':':
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (prefix) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (*prefix == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- *prefix = qint16(n + 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (val) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (val->prefix == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ val->prefix = n + 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else { // only one colon allowed according to the namespace spec.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- putChar(c);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return FastScanNameResult(n);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- putChar(c);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return FastScanNameResult(n);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Q_FALLTHROUGH();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1307,12 +1310,12 @@ inline int QXmlStreamReaderPrivate::fastScanName(int *prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (prefix)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- *prefix = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (val)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ val->prefix = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- qsizetype pos = textBuffer.size() - n;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- putString(textBuffer, pos);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- textBuffer.resize(pos);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return FastScanNameResult(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- enum NameChar { NameBeginning, NameNotBeginning, NotName };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1793,6 +1796,14 @@ void QXmlStreamReaderPrivate::raiseWellFormedError(const QString &message)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- raiseError(QXmlStreamReader::NotWellFormedError, message);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+void QXmlStreamReaderPrivate::raiseNamePrefixTooLongError()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // TODO: add a ImplementationLimitsExceededError and use it instead
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raiseError(QXmlStreamReader::NotWellFormedError,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ QXmlStream::tr("Length of XML attribute name exceeds implemnetation limits (4KiB "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ "characters)."));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void QXmlStreamReaderPrivate::parseError()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream.g b/src/corelib/serialization/qxmlstream.g
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 81ca36688cd..1b5a682b36a 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream.g
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream.g
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1419,7 +1419,12 @@ space_opt ::= space;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- qname ::= LETTER;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case $rule_number: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- sym(1).len += fastScanName(&sym(1).prefix);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Value &val = sym(1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (auto res = fastScanName(&val))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ val.len += *res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (atEnd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- resume($rule_number);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1430,7 +1435,11 @@ qname ::= LETTER;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- name ::= LETTER;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case $rule_number:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- sym(1).len += fastScanName();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (auto res = fastScanName())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ sym(1).len += *res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (atEnd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- resume($rule_number);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream_p.h b/src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 8f64130d2f9..a277753f188 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -38,7 +38,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constexpr XmlStringRef() = default;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- constexpr inline XmlStringRef(const QString *string, qsizetype pos, qsizetype length)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- : m_string(string), m_pos(pos), m_size(length)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ : m_string(string), m_pos(pos), m_size((Q_ASSERT(length >= 0), length))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- XmlStringRef(const QString *string)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -471,7 +471,16 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- qsizetype fastScanLiteralContent();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- qsizetype fastScanSpace();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- qsizetype fastScanContentCharList();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qsizetype fastScanName(qint16 *prefix = nullptr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ struct FastScanNameResult {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ FastScanNameResult() : ok(false) {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ explicit FastScanNameResult(qsizetype len) : addToLen(len), ok(true) { }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ operator bool() { return ok; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qsizetype operator*() { Q_ASSERT(ok); return addToLen; }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qsizetype addToLen;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool ok;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ FastScanNameResult fastScanName(Value *val = nullptr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- inline qsizetype fastScanNMTOKEN();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -480,6 +489,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void raiseError(QXmlStreamReader::Error error, const QString& message = QString());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void raiseWellFormedError(const QString &message);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ void raiseNamePrefixTooLongError();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QXmlStreamEntityResolver *entityResolver;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstreamparser_p.h b/src/corelib/serialization/qxmlstreamparser_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 17558aae641..d67d71ca01d 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstreamparser_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstreamparser_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -947,7 +947,12 @@ bool QXmlStreamReaderPrivate::parse()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case 262: {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- sym(1).len += fastScanName(&sym(1).prefix);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Value &val = sym(1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (auto res = fastScanName(&val))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ val.len += *res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (atEnd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- resume(262);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -955,7 +960,11 @@ bool QXmlStreamReaderPrivate::parse()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case 263:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- sym(1).len += fastScanName();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (auto res = fastScanName())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ sym(1).len += *res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (atEnd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- resume(263);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return false;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-38197-qtbase.diff b/aqua/qt6/files/CVE-2023-38197-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 4474d87e4c8..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-38197-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,217 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream.cpp b/src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 598b9f0..885354f 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -126,7 +126,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- addData() or by waiting for it to arrive on the device().
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- \value UnexpectedElementError The parser encountered an element
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- that was different to those it expected.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ or token that was different to those it expected.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -263,13 +263,34 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QXmlStreamReader is a well-formed XML 1.0 parser that does \e not
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- include external parsed entities. As long as no error occurs, the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- application code can thus be assured that the data provided by the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- stream reader satisfies the W3C's criteria for well-formed XML. For
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- example, you can be certain that all tags are indeed nested and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- closed properly, that references to internal entities have been
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- replaced with the correct replacement text, and that attributes have
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- been normalized or added according to the internal subset of the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- DTD.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ application code can thus be assured, that
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \list
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li the data provided by the stream reader satisfies the W3C's
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ criteria for well-formed XML,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li tokens are provided in a valid order.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \endlist
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Unless QXmlStreamReader raises an error, it guarantees the following:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \list
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li All tags are nested and closed properly.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li References to internal entities have been replaced with the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ correct replacement text.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li Attributes have been normalized or added according to the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ internal subset of the \l DTD.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li Tokens of type \l StartDocument happen before all others,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ aside from comments and processing instructions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li At most one DOCTYPE element (a token of type \l DTD) is present.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \li If present, the DOCTYPE appears before all other elements,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ aside from StartDocument, comments and processing instructions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \endlist
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ In particular, once any token of type \l StartElement, \l EndElement,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \l Characters, \l EntityReference or \l EndDocument is seen, no
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ tokens of type StartDocument or DTD will be seen. If one is present in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ the input stream, out of order, an error is raised.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \note The token types \l Comment and \l ProcessingInstruction may appear
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ anywhere in the stream.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- If an error occurs while parsing, atEnd() and hasError() return
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- true, and error() returns the error that occurred. The functions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -572,6 +593,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- d->token = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return readNext();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ d->checkToken();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return d->type;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -691,6 +713,13 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 0, 8, 16, 30, 42, 55, 66, 77, 85, 89, 105, 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static const char QXmlStreamReader_XmlContextString[] =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ "Prolog\0"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ "Body\0";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static const short QXmlStreamReader_XmlContextString_indices[] = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 0, 7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- \property QXmlStreamReader::namespaceProcessing
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -727,6 +756,16 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QXmlStreamReader_tokenTypeString_indices[d->type]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \internal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \return \param ctxt (Prolog/Body) as a string.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+QString contextString(QXmlStreamReaderPrivate::XmlContext ctxt)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QLatin1String(QXmlStreamReader_XmlContextString +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ QXmlStreamReader_XmlContextString_indices[static_cast<int>(ctxt)]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif // QT_NO_XMLSTREAMREADER
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QXmlStreamPrivateTagStack::QXmlStreamPrivateTagStack()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -813,6 +852,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- type = QXmlStreamReader::NoToken;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- error = QXmlStreamReader::NoError;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ currentContext = XmlContext::Prolog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ foundDTD = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3730,6 +3771,91 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static constexpr bool isTokenAllowedInContext(QXmlStreamReader::TokenType type,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ QXmlStreamReaderPrivate::XmlContext loc)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ switch (type) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::StartDocument:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::DTD:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return loc == QXmlStreamReaderPrivate::XmlContext::Prolog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::StartElement:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::EndElement:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::Characters:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::EntityReference:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::EndDocument:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return loc == QXmlStreamReaderPrivate::XmlContext::Body;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::Comment:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::ProcessingInstruction:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::NoToken:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QXmlStreamReader::Invalid:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \internal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \brief QXmlStreamReader::isValidToken
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \return \c true if \param type is a valid token type.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \return \c false if \param type is an unexpected token,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ which indicates a non-well-formed or invalid XML stream.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+bool QXmlStreamReaderPrivate::isValidToken(QXmlStreamReader::TokenType type)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // Don't change currentContext, if Invalid or NoToken occur in the prolog
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (type == QXmlStreamReader::Invalid || type == QXmlStreamReader::NoToken)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // If a token type gets rejected in the body, there is no recovery
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const bool result = isTokenAllowedInContext(type, currentContext);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (result || currentContext == XmlContext::Body)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // First non-Prolog token observed => switch context to body and check again.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ currentContext = XmlContext::Body;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return isTokenAllowedInContext(type, currentContext);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+/*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ \internal
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Checks token type and raises an error, if it is invalid
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ in the current context (prolog/body).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+void QXmlStreamReaderPrivate::checkToken()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Q_Q(QXmlStreamReader);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // The token type must be consumed, to keep track if the body has been reached.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const XmlContext context = currentContext;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const bool ok = isValidToken(type);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // Do nothing if an error has been raised already (going along with an unexpected token)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (error != QXmlStreamReader::Error::NoError)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!ok) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raiseError(QXmlStreamReader::UnexpectedElementError,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ QLatin1String("Unexpected token type %1 in %2.")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .arg(q->tokenString(), contextString(context)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (type != QXmlStreamReader::DTD)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // Raise error on multiple DTD tokens
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (foundDTD) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raiseError(QXmlStreamReader::UnexpectedElementError,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ QLatin1String("Found second DTD token in %1.").arg(contextString(context)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ foundDTD = true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- \fn bool QXmlStreamAttributes::hasAttribute(const QString &qualifiedName) const
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- \since 4.5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/serialization/qxmlstream_p.h b/src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index a277753..c33f1cd 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/serialization/qxmlstream_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -270,6 +270,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QStringDecoder decoder;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool atEnd;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ enum class XmlContext
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Prolog,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ Body,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ XmlContext currentContext = XmlContext::Prolog;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool foundDTD = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool isValidToken(QXmlStreamReader::TokenType type);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ void checkToken();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- \sa setType()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2023-51714-qtbase.diff b/aqua/qt6/files/CVE-2023-51714-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index e8ae0dd1215..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2023-51714-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,86 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From ea63c28efc1d2ecb467b83a34923d12462efa96f Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Marc Mutz <marc.mutz@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 12 Dec 2023 20:51:56 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] HPack: fix a Yoda Condition
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Putting the variable on the LHS of a relational operation makes the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-expression easier to read. In this case, we find that the whole
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-expression is nonsensical as an overflow protection, because if
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-name.size() + value.size() overflows, the result will exactly _not_
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-be > max() - 32, because UB will have happened.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-To be fixed in a follow-up commit.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-As a drive-by, add parentheses around the RHS.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I35ce598884c37c51b74756b3bd2734b9aad63c09
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 658607a34ead214fbacbc2cca44915655c318ea9)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 4f7efd41740107f90960116700e3134f5e433867)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 13c16b756900fe524f6d9534e8a07aa003c05e0c)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 1d4788a39668fb2dc5912a8d9c4272dc40e99f92)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 87de75b5cc946d196decaa6aef4792a6cac0b6db)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/network/access/http2/hpacktable.cpp b/src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 834214f..ab166a6 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -27,7 +27,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // 32 octets of overhead."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const unsigned sum = unsigned(name.size() + value.size());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (std::numeric_limits<unsigned>::max() - 32 < sum)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (sum > (std::numeric_limits<unsigned>::max() - 32))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return HeaderSize();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return HeaderSize(true, quint32(sum + 32));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 9ef4ca5ecfed771dab890856130e93ef5ceabef5 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Marc Mutz <marc.mutz@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 12 Dec 2023 22:08:07 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] HPack: fix incorrect integer overflow check
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This code never worked:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-For the comparison with max() - 32 to trigger, on 32-bit platforms (or
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Qt 5) signed interger overflow would have had to happen in the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-addition of the two sizes. The compiler can therefore remove the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-overflow check as dead code.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-On Qt 6 and 64-bit platforms, the signed integer addition would be
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-very unlikely to overflow, but the following truncation to uint32
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-would yield the correct result only in a narrow 32-value window just
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-below UINT_MAX, if even that.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Fix by using the proper tool, qAddOverflow.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Pick-to: 5.15
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I7599f2e75ff7f488077b0c60b81022591005661c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit ee5da1f2eaf8932aeca02ffea6e4c618585e29e3)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit debeb8878da2dc706ead04b6072ecbe7e5313860)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Marc Mutz <marc.mutz@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit 811b9eef6d08d929af8708adbf2a5effb0eb62d7)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit f931facd077ce945f1e42eaa3bead208822d3e00)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/network/access/http2/hpacktable.cpp b/src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 7e4950d..897f13a 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/network/access/http2/hpacktable.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -26,7 +26,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // for counting the number of references to the name and value would have
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // 32 octets of overhead."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const unsigned sum = unsigned(name.size() + value.size());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ size_t sum;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(size_t(name.size()), size_t(value.size()), &sum))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return HeaderSize();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (sum > (std::numeric_limits<unsigned>::max() - 32))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return HeaderSize();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return HeaderSize(true, quint32(sum + 32));
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2024-25580-qtbase.diff b/aqua/qt6/files/CVE-2024-25580-qtbase.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 8f24c8c1fcd..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/CVE-2024-25580-qtbase.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,325 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/gui/util/qktxhandler.cpp b/src/gui/util/qktxhandler.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 32ea08144b..f9b4c807c9 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/util/qktxhandler.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/util/qktxhandler.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -41,7 +41,7 @@ struct KTXHeader {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- quint32 bytesOfKeyValueData;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--static const quint32 headerSize = sizeof(KTXHeader);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static constexpr quint32 qktxh_headerSize = sizeof(KTXHeader);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Currently unused, declared for future reference
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct KTXKeyValuePairItem {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -71,20 +71,32 @@ struct KTXMipmapLevel {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--// Returns the nearest multiple of 'rounding' greater than or equal to 'value'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--constexpr quint32 withPadding(quint32 value, quint32 rounding)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// Returns the nearest multiple of 4 greater than or equal to 'value'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static const std::optional<quint32> nearestMultipleOf4(quint32 value)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- Q_ASSERT(rounding > 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return value + (rounding - 1) - ((value + (rounding - 1)) % rounding);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ constexpr quint32 rounding = 4;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 result = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(value, rounding - 1, &result))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ result &= ~(rounding - 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+// Returns a view with prechecked bounds
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+static QByteArrayView safeView(QByteArrayView view, quint32 start, quint32 length)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 end = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(start, length, &end) || end > quint32(view.length()))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return {};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return view.sliced(start, length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QKtxHandler::~QKtxHandler() = default;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool QKtxHandler::canRead(const QByteArray &suffix, const QByteArray &block)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Q_UNUSED(suffix);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return (qstrncmp(block.constData(), ktxIdentifier, KTX_IDENTIFIER_LENGTH) == 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return block.startsWith(ktxIdentifier);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QTextureFileData QKtxHandler::read()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -93,55 +95,122 @@ QTextureFileData QKtxHandler::read()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const QByteArray buf = device()->readAll();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const quint32 dataSize = quint32(buf.size());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (dataSize < headerSize || !canRead(QByteArray(), buf)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qCDebug(lcQtGuiTextureIO, "Invalid KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (buf.size() > std::numeric_limits<quint32>::max()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Too big KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!canRead(QByteArray(), buf)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Invalid KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const KTXHeader *header = reinterpret_cast<const KTXHeader *>(buf.data());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (!checkHeader(*header)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qCDebug(lcQtGuiTextureIO, "Unsupported KTX file format in %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (buf.size() < qsizetype(qktxh_headerSize)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Invalid KTX header size in %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ KTXHeader header;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ memcpy(&header, buf.data(), qktxh_headerSize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!checkHeader(header)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Unsupported KTX file format in %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QTextureFileData texData;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- texData.setData(buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setSize(QSize(decode(header->pixelWidth), decode(header->pixelHeight)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setGLFormat(decode(header->glFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setGLInternalFormat(decode(header->glInternalFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setGLBaseInternalFormat(decode(header->glBaseInternalFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setSize(QSize(decode(header.pixelWidth), decode(header.pixelHeight)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setGLFormat(decode(header.glFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setGLInternalFormat(decode(header.glInternalFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setGLBaseInternalFormat(decode(header.glBaseInternalFormat));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setNumLevels(decode(header->numberOfMipmapLevels));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setNumFaces(decode(header->numberOfFaces));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setNumLevels(decode(header.numberOfMipmapLevels));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setNumFaces(decode(header.numberOfFaces));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const quint32 bytesOfKeyValueData = decode(header->bytesOfKeyValueData);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (headerSize + bytesOfKeyValueData < quint64(buf.size())) // oob check
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- texData.setKeyValueMetadata(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- decodeKeyValues(QByteArrayView(buf.data() + headerSize, bytesOfKeyValueData)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- quint32 offset = headerSize + bytesOfKeyValueData;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const quint32 bytesOfKeyValueData = decode(header.bytesOfKeyValueData);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 headerKeyValueSize;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(qktxh_headerSize, bytesOfKeyValueData, &headerKeyValueSize)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Overflow in size of key value data in header of KTX file %s",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (headerKeyValueSize >= quint32(buf.size())) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // File contains key/values
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (bytesOfKeyValueData > 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ auto keyValueDataView = safeView(buf, qktxh_headerSize, bytesOfKeyValueData);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (keyValueDataView.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Invalid view in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ auto keyValues = decodeKeyValues(keyValueDataView);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!keyValues) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Could not parse key values in KTX file %s",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ texData.setKeyValueMetadata(*keyValues);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // Technically, any number of levels is allowed but if the value is bigger than
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // what is possible in KTX V2 (and what makes sense) we return an error.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ // maxLevels = log2(max(width, height, depth))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const int maxLevels = (sizeof(quint32) * 8)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ - qCountLeadingZeroBits(std::max(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ { header.pixelWidth, header.pixelHeight, header.pixelDepth }));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (texData.numLevels() > maxLevels) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Too many levels in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- constexpr int MAX_ITERATIONS = 32; // cap iterations in case of corrupt data
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (texData.numFaces() != 1 && texData.numFaces() != 6) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Invalid number of faces in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for (int level = 0; level < qMin(texData.numLevels(), MAX_ITERATIONS); level++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (offset + sizeof(quint32) > dataSize) // Corrupt file; avoid oob read
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 offset = headerKeyValueSize;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for (int level = 0; level < texData.numLevels(); level++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto imageSizeView = safeView(buf, offset, sizeof(quint32));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (imageSizeView.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const quint32 imageSize = decode(qFromUnaligned<quint32>(buf.data() + offset));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- offset += sizeof(quint32);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const quint32 imageSize = decode(qFromUnaligned<quint32>(imageSizeView.data()));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ offset += sizeof(quint32); // overflow checked indirectly above
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for (int face = 0; face < qMin(texData.numFaces(), MAX_ITERATIONS); face++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ for (int face = 0; face < texData.numFaces(); face++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- texData.setDataOffset(offset, level, face);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- texData.setDataLength(imageSize, level, face);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Add image data and padding to offset
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- offset += withPadding(imageSize, 4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto padded = nearestMultipleOf4(imageSize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!padded) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Overflow in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 offsetNext;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(offset, *padded, &offsetNext)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ offset = offsetNext;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (!texData.isValid()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- qCDebug(lcQtGuiTextureIO, "Invalid values in header of KTX file %s", logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Invalid values in header of KTX file %s",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ logName().constData());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return QTextureFileData();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -187,33 +220,83 @@ bool QKtxHandler::checkHeader(const KTXHeader &header)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return is2D && (isCubeMap || isCompressedImage);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--QMap<QByteArray, QByteArray> QKtxHandler::decodeKeyValues(QByteArrayView view) const
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+std::optional<QMap<QByteArray, QByteArray>> QKtxHandler::decodeKeyValues(QByteArrayView view) const
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QMap<QByteArray, QByteArray> output;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- quint32 offset = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- while (offset < view.size() + sizeof(quint32)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ while (offset < quint32(view.size())) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto keyAndValueByteSizeView = safeView(view, offset, sizeof(quint32));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (keyAndValueByteSizeView.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Invalid view in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const quint32 keyAndValueByteSize =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- decode(qFromUnaligned<quint32>(view.constData() + offset));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ decode(qFromUnaligned<quint32>(keyAndValueByteSizeView.data()));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- offset += sizeof(quint32);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (offset + keyAndValueByteSize > quint64(view.size()))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- break; // oob read
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 offsetKeyAndValueStart;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(offset, quint32(sizeof(quint32)), &offsetKeyAndValueStart)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Overflow in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 offsetKeyAndValueEnd;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(offsetKeyAndValueStart, keyAndValueByteSize, &offsetKeyAndValueEnd)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Overflow in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto keyValueView = safeView(view, offsetKeyAndValueStart, keyAndValueByteSize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (keyValueView.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Invalid view in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // 'key' is a UTF-8 string ending with a null terminator, 'value' is the rest.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // To separate the key and value we convert the complete data to utf-8 and find the first
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // null terminator from the left, here we split the data into two.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const auto str = QString::fromUtf8(view.constData() + offset, keyAndValueByteSize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const int idx = str.indexOf('\0'_L1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if (idx == -1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- continue;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const QByteArray key = str.left(idx).toUtf8();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const size_t keySize = key.size() + 1; // Actual data size
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const QByteArray value = QByteArray::fromRawData(view.constData() + offset + keySize,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- keyAndValueByteSize - keySize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- offset = withPadding(offset + keyAndValueByteSize, 4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- output.insert(key, value);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const int idx = keyValueView.indexOf('\0');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (idx == -1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Invalid key in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const QByteArrayView keyView = safeView(view, offsetKeyAndValueStart, idx);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (keyView.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Overflow in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const quint32 keySize = idx + 1; // Actual data size
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 offsetValueStart;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qAddOverflow(offsetKeyAndValueStart, keySize, &offsetValueStart)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Overflow in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ quint32 valueSize;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (qSubOverflow(keyAndValueByteSize, keySize, &valueSize)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Underflow in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const QByteArrayView valueView = safeView(view, offsetValueStart, valueSize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (valueView.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Invalid view in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ output.insert(keyView.toByteArray(), valueView.toByteArray());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const auto offsetNext = nearestMultipleOf4(offsetKeyAndValueEnd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (!offsetNext) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning(lcQtGuiTextureIO, "Overflow in KTX key-value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return std::nullopt;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ offset = *offsetNext;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return output;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/gui/util/qktxhandler_p.h b/src/gui/util/qktxhandler_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 77ce1ca556..9cf6f65586 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/util/qktxhandler_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/util/qktxhandler_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -17,6 +17,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "qtexturefilehandler_p.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <optional>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QT_BEGIN_NAMESPACE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct KTXHeader;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -33,7 +35,7 @@ public:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- private:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool checkHeader(const KTXHeader &header);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- QMap<QByteArray, QByteArray> decodeKeyValues(QByteArrayView view) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ std::optional<QMap<QByteArray, QByteArray>> decodeKeyValues(QByteArrayView view) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- quint32 decode(quint32 val) const;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool inverseEndian = false;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/CVE-2024-39936-qtbase-6.7.diff b/aqua/qt6/files/CVE-2024-39936-qtbase-6.7.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..7dd7e82c332
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/aqua/qt6/files/CVE-2024-39936-qtbase-6.7.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,138 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0abd99b9bc2..3631b13dc85 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/network/access/qhttp2protocolhandler.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/network/access/qhttp2protocolhandler.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -303,12 +303,12 @@ bool QHttp2ProtocolHandler::sendRequest()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- if (!prefaceSent && !sendClientPreface())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!requests.size())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!prefaceSent && !sendClientPreface())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ m_channel->state = QHttpNetworkConnectionChannel::WritingState;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Check what was promised/pushed, maybe we do not have to send a request
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // and have a response already?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 6766989690c..1e4161d1fdf 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/network/access/qhttpnetworkconnectionchannel.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/network/access/qhttpnetworkconnectionchannel.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -209,6 +209,10 @@ void QHttpNetworkConnectionChannel::abort()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool QHttpNetworkConnectionChannel::sendRequest()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Q_ASSERT(protocolHandler);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (waitingForPotentialAbort) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ needInvokeSendRequest = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return false; // this return value is unused
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return protocolHandler->sendRequest();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -221,21 +225,28 @@ bool QHttpNetworkConnectionChannel::sendRequest()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void QHttpNetworkConnectionChannel::sendRequestDelayed()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QMetaObject::invokeMethod(this, [this] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- Q_ASSERT(protocolHandler);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (reply)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- protocolHandler->sendRequest();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sendRequest();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }, Qt::ConnectionType::QueuedConnection);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void QHttpNetworkConnectionChannel::_q_receiveReply()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Q_ASSERT(protocolHandler);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (waitingForPotentialAbort) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ needInvokeReceiveReply = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ protocolHandler->_q_receiveReply();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void QHttpNetworkConnectionChannel::_q_readyRead()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Q_ASSERT(protocolHandler);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (waitingForPotentialAbort) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ needInvokeReadyRead = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ protocolHandler->_q_readyRead();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1239,7 +1250,18 @@ void QHttpNetworkConnectionChannel::_q_encrypted()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (!h2RequestsToSend.isEmpty()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Similar to HTTP/1.1 counterpart below:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const auto &pair = std::as_const(h2RequestsToSend).first();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ waitingForPotentialAbort = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ emit pair.second->encrypted();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // We don't send or handle any received data until any effects from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // emitting encrypted() have been processed. This is necessary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // because the user may have called abort(). We may also abort the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // whole connection if the request has been aborted and there is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // no more requests to send.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ QMetaObject::invokeMethod(this,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ &QHttpNetworkConnectionChannel::checkAndResumeCommunication,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Qt::QueuedConnection);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // In case our peer has sent us its settings (window size, max concurrent streams etc.)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // let's give _q_receiveReply a chance to read them first ('invokeMethod', QueuedConnection).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1257,6 +1279,28 @@ void QHttpNetworkConnectionChannel::_q_encrypted()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void QHttpNetworkConnectionChannel::checkAndResumeCommunication()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Q_ASSERT(connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ || connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2Direct);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // Because HTTP/2 requires that we send a SETTINGS frame as the first thing we do, and respond
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // to a SETTINGS frame with an ACK, we need to delay any handling until we can ensure that any
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // effects from emitting encrypted() have been processed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // This function is called after encrypted() was emitted, so check for changes.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (!reply && h2RequestsToSend.isEmpty())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ abort();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ waitingForPotentialAbort = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (needInvokeReadyRead)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ _q_readyRead();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (needInvokeReceiveReply)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ _q_receiveReply();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (needInvokeSendRequest)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ sendRequest();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void QHttpNetworkConnectionChannel::requeueHttp2Requests()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const auto h2RequestsToSendCopy = std::exchange(h2RequestsToSend, {});
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c42290feca4..061f20fd426 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/network/access/qhttpnetworkconnectionchannel_p.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/network/access/qhttpnetworkconnectionchannel_p.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -74,6 +74,10 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QAbstractSocket *socket;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool ssl;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool isInitialized;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bool waitingForPotentialAbort = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bool needInvokeReceiveReply = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bool needInvokeReadyRead = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ bool needInvokeSendRequest = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ChannelState state;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QHttpNetworkRequest request; // current request, only used for HTTP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ QHttpNetworkReply *reply; // current reply for this request, only used for HTTP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -146,6 +150,8 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void closeAndResendCurrentRequest();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void resendCurrentRequest();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void checkAndResumeCommunication();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool isSocketBusy() const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool isSocketWriting() const;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool isSocketWaiting() const;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtbase-fix-cmake-3.28.diff b/aqua/qt6/files/patch-qtbase-fix-cmake-3.28.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 923476a4735..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtbase-fix-cmake-3.28.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,45 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 0efea8020c1d221635aaa0a71529edb392cfe3cc Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Joerg Bornemann <joerg.bornemann@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Mon, 11 Sep 2023 14:48:32 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] CMake: Fix build with CMake 3.28 on macOS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-FindWrapOpenGL.cmake assumed that IMPORTED_LOCATION is the absolute path
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-of the library within the framework. That's not the case with CMake 3.28
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-anymore. There, IMPORTED_LOCATION is the absolute path of the framework
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-directory.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-The relevant upstream CMake change is
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-6b01a27f901b5eb392955fea322cde44a1b782a3.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Pick-to: 6.2 6.5 6.6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I6b702a28318e0978c56dec83c398965aa77ef020
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- cmake/FindWrapOpenGL.cmake | 8 ++++++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 6 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/cmake/FindWrapOpenGL.cmake b/cmake/FindWrapOpenGL.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 3e6abaf4dda..7295a159caf 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- cmake/FindWrapOpenGL.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ cmake/FindWrapOpenGL.cmake
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -17,14 +17,18 @@ if (OpenGL_FOUND)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- add_library(WrapOpenGL::WrapOpenGL INTERFACE IMPORTED)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if(APPLE)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # CMake 3.27 and older:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # On Darwin platforms FindOpenGL sets IMPORTED_LOCATION to the absolute path of the library
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # within the framework. This ends up as an absolute path link flag, which we don't want,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # because that makes our .prl files un-relocatable.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Extract the framework path instead, and use that in INTERFACE_LINK_LIBRARIES,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- # which CMake ends up transforming into a reloctable -framework flag.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # which CMake ends up transforming into a relocatable -framework flag.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # See https://gitlab.kitware.com/cmake/cmake/-/issues/20871 for details.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # CMake 3.28 and above:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ # IMPORTED_LOCATION is the absolute path the the OpenGL.framework folder.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- get_target_property(__opengl_fw_lib_path OpenGL::GL IMPORTED_LOCATION)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if(__opengl_fw_lib_path)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if(__opengl_fw_lib_path AND NOT __opengl_fw_lib_path MATCHES "/([^/]+)\\.framework$")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- get_filename_component(__opengl_fw_path "${__opengl_fw_lib_path}" DIRECTORY)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- endif()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtbase-intel_intrinsics.diff b/aqua/qt6/files/patch-qtbase-intel_intrinsics.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 65d9f364154..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtbase-intel_intrinsics.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,20 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-LLVM clang [3.9.0,9.0.0) (and so likely also Xcode clang <11.4)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-defined the _mm256_maskz_cvtps_ph intrinsic as 2-argument.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Use the equivalent intrinsic _mm256_maskz_cvt_roundps_ph instead
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-since clang has always defined it as 3-argument.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-https://trac.macports.org/ticket/67802
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/global/qfloat16.cpp b/src/corelib/global/qfloat16.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/global/qfloat16.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/global/qfloat16.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -176,9 +176,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- void qFloatToFloat16_tail_avx256(quint16 *out, const float *in, qsizetype len) noexcept
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- __mmask16 mask = _bzhi_u32(-1, len);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- __m256 f32 = _mm256_maskz_loadu_ps(mask, in );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- __m128i f16 = _mm256_maskz_cvtps_ph(mask, f32, _MM_FROUND_TO_NEAREST_INT);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ __m128i f16 = _mm256_maskz_cvt_roundps_ph(mask, f32, _MM_FROUND_TO_NEAREST_INT);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- _mm_mask_storeu_epi16(out, mask, f16);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static QT_FUNCTION_TARGET(ARCH_SKYLAKE_AVX512)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtbase-macdeployqt.diff b/aqua/qt6/files/patch-qtbase-macdeployqt.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 82080215941..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtbase-macdeployqt.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,33 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From c66dab56b20a47062c74fa6ecf8ea438bdc07b24 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Jonas Kvinge <jonas@jkvinge.net>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 26 Sep 2023 19:02:47 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] macdeployqt: Also look for app libraries with .so extension
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-MIME-Version: 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Content-Type: text/plain; charset=utf8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Content-Transfer-Encoding: 8bit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Fixes deploying glib-networking gio modules which uses .so file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-extension.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I6b4c4e9c3bb5745ffa33d7e83c5853a9372f1ca6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/tools/macdeployqt/shared/shared.cpp | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/tools/macdeployqt/shared/shared.cpp b/src/tools/macdeployqt/shared/shared.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 0671ebf2f32f..413f8413f69f 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/tools/macdeployqt/shared/shared.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/tools/macdeployqt/shared/shared.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -435,7 +435,7 @@ QStringList findAppLibraries(const QString &appBundlePath)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QStringList result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // dylibs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- QDirIterator iter(appBundlePath, QStringList() << QString::fromLatin1("*.dylib"),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ QDirIterator iter(appBundlePath, QStringList() << QString::fromLatin1("*.dylib") << QString::fromLatin1("*.so"),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- while (iter.hasNext()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- iter.next();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.16.3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtbase-macos_10.14_sdk.diff b/aqua/qt6/files/patch-qtbase-macos_10.14_sdk.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 37605c24286..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtbase-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,113 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Allow building with macOS 10.14 SDK (will still warn about
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-"instance method '-charactersByApplyingModifiers:' not found"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-and "instance method '-location' not found")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Upstream-Status: Inappropriate [violates DRY]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/platform/darwin/qapplekeymapper.mm.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/platform/darwin/qapplekeymapper.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -528,7 +528,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // we first run the event through the Carbon APIs and then
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // compare the results to Cocoa.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- auto cocoaModifiers = toCocoaModifiers(qtModifiers);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- auto *charactersWithModifiers = [NSApp.currentEvent charactersByApplyingModifiers:cocoaModifiers];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ NSString *charactersWithModifiers = [NSApp.currentEvent charactersByApplyingModifiers:cocoaModifiers];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QChar cocoaUnicodeKey;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (charactersWithModifiers.length > 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/gui/rhi/qrhimetal.mm.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/gui/rhi/qrhimetal.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -369,15 +369,15 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- driverInfoStruct.deviceType = QRhiDriverInfo::IntegratedDevice;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (@available(macOS 10.15, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- const MTLDeviceLocation deviceLocation = [d->dev location];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const NSUInteger deviceLocation = (NSUInteger)[d->dev location];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- switch (deviceLocation) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- case MTLDeviceLocationBuiltIn:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case 0:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- driverInfoStruct.deviceType = QRhiDriverInfo::IntegratedDevice;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- case MTLDeviceLocationSlot:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case 1:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- driverInfoStruct.deviceType = QRhiDriverInfo::DiscreteDevice;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- case MTLDeviceLocationExternal:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case 2:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- driverInfoStruct.deviceType = QRhiDriverInfo::ExternalDevice;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -403,8 +403,10 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #if defined(Q_OS_MACOS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- caps.maxTextureSize = 16384;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- caps.baseVertexAndInstance = true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (@available(macOS 10.15, *))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- caps.isAppleGPU = [d->dev supportsFamily:MTLGPUFamilyApple7];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- caps.maxThreadGroupSize = 1024;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #elif defined(Q_OS_TVOS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if ([d->dev supportsFeatureSet: MTLFeatureSet(30003)]) // MTLFeatureSet_tvOS_GPUFamily2_v1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2543,6 +2545,26 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return srgb ? MTLPixelFormatASTC_12x10_sRGB : MTLPixelFormatASTC_12x10_LDR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case QRhiTexture::ASTC_12x12:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return srgb ? MTLPixelFormatASTC_12x12_sRGB : MTLPixelFormatASTC_12x12_LDR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#elif MAC_OS_X_VERSION_MAX_ALLOWED < 110000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ETC2_RGB8:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ETC2_RGB8A1:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ETC2_RGBA8:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_4x4:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_5x4:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_5x5:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_6x5:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_6x6:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_8x5:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_8x6:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_8x8:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_10x5:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_10x6:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_10x8:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_10x10:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_12x10:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ case QRhiTexture::ASTC_12x12:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ qWarning("QRhiMetal: ETC2 compression not supported on this platform");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return MTLPixelFormatInvalid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case QRhiTexture::ETC2_RGB8:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (d->caps.isAppleGPU) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2727,6 +2747,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- switch (m_type) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case DepthStencil:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef Q_OS_MACOS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 110000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (rhiD->caps.isAppleGPU) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (@available(macOS 11.0, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- desc.storageMode = MTLStorageModeMemoryless;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2735,10 +2756,13 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Q_UNREACHABLE();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- desc.storageMode = MTLStorageModePrivate;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- d->format = rhiD->d->dev.depth24Stencil8PixelFormatSupported
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ? MTLPixelFormatDepth24Unorm_Stencil8 : MTLPixelFormatDepth32Float_Stencil8;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 110000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- desc.storageMode = MTLStorageModeMemoryless;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- d->format = MTLPixelFormatDepth32Float_Stencil8;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/platforms/cocoa/qcocoascreen.mm.orig 2023-02-14 09:26:04.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/platforms/cocoa/qcocoascreen.mm 2023-12-28 11:31:59.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -271,9 +271,11 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- float refresh = CGDisplayModeGetRefreshRate(displayMode);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- m_refreshRate = refresh > 0 ? refresh : 60.0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (@available(macOS 10.15, *))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- m_name = QString::fromNSString(nsScreen.localizedName);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- m_name = displayName(m_displayId);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const bool didChangeGeometry = m_geometry != previousGeometry || m_availableGeometry != previousAvailableGeometry;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtbase-memory_resource.diff b/aqua/qt6/files/patch-qtbase-memory_resource.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 99027d4476e..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtbase-memory_resource.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,80 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From c70145c6bf54cda9723cccdc7ca07f8d8fd321cd Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= <tor.arne.vestbo@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Wed, 7 Jun 2023 02:31:42 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Opt out of standard library memory_resource on macOS < 14 and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- iOS < 17
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-MIME-Version: 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Content-Type: text/plain; charset=UTF-8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Content-Transfer-Encoding: 8bit
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Although the header is available, and the compiler reports that the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-standard library supports memory_resource, the feature is only
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-available on macOS 14 and iOS 17, as reported by
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- https://developer.apple.com/xcode/cpp/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-As long as our deployment target is lower we can't unconditionally
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-use this feature. It's not clear whether the expectation is that
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-consumers of the standard library on these platforms will have to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-runtime check their uses of these APIs.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Includes e84c0df50f51c61aa49b47823582b0f8de406e3d for fixing
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-missing line continuations.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Task-number: QTBUG-114316
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I50c1425334b9b9842b253442e2b3aade637783ea
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-(cherry picked from commit f7c8ff511c30dc4310a72b3da4b4a345efe1fba0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/corelib/global/qcompilerdetection.h | 20 +++++++++++++-------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- src/corelib/tools/qduplicatetracker_p.h | 2 +-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2 files changed, 14 insertions(+), 8 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index f1218934412..70fa7f6c9f7 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/global/qcompilerdetection.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/global/qcompilerdetection.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -895,16 +895,22 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # endif // !_HAS_CONSTEXPR
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # endif // !__GLIBCXX__ && !_LIBCPP_VERSION
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # endif // Q_OS_QNX
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# if defined(Q_CC_CLANG) && defined(Q_OS_MAC) && defined(__GNUC_LIBSTD__) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- && ((__GNUC_LIBSTD__-0) * 100 + __GNUC_LIBSTD_MINOR__-0 <= 402)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# if defined(Q_CC_CLANG) && defined(Q_OS_MAC)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# if defined(__GNUC_LIBSTD__) && ((__GNUC_LIBSTD__-0) * 100 + __GNUC_LIBSTD_MINOR__-0 <= 402)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Apple has not updated libstdc++ since 2007, which means it does not have
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // <initializer_list> or std::move. Let's disable these features
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# undef Q_COMPILER_INITIALIZER_LISTS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# undef Q_COMPILER_RVALUE_REFS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# undef Q_COMPILER_REF_QUALIFIERS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# undef Q_COMPILER_INITIALIZER_LISTS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# undef Q_COMPILER_RVALUE_REFS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# undef Q_COMPILER_REF_QUALIFIERS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Also disable <atomic>, since it's clearly not there
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# undef Q_COMPILER_ATOMICS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# undef Q_COMPILER_ATOMICS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# if defined(__cpp_lib_memory_resource) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ && ((defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 140000) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 170000))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# undef __cpp_lib_memory_resource // Only supported on macOS 14 and iOS 17
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+# endif // defined(Q_CC_CLANG) && defined(Q_OS_DARWIN)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // Don't break code that is already using Q_COMPILER_DEFAULT_DELETE_MEMBERS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/corelib/tools/qduplicatetracker_p.h b/src/corelib/tools/qduplicatetracker_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 950220184f8..23465ecffed 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/corelib/tools/qduplicatetracker_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/corelib/tools/qduplicatetracker_p.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -16,7 +16,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <private/qglobal_p.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#if __has_include(<memory_resource>)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef __cpp_lib_memory_resource
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # include <unordered_set>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # include <memory_resource>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # include <qhash.h> // for the hashing helpers
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtdeclarative-xcode11.3.diff b/aqua/qt6/files/patch-qtdeclarative-xcode11.3.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 3e23453d23e..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtdeclarative-xcode11.3.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,22 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/qml/jsruntime/qv4engine_p.h.orig 2023-03-11 23:23:17.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/qml/jsruntime/qv4engine_p.h 2023-07-08 21:48:13.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -774,7 +774,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define CHECK_STACK_LIMITS(v4) if ((v4)->checkStackLimits()) return Encode::undefined(); \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- ExecutionEngineCallDepthRecorder _executionEngineCallDepthRecorder(v4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ExecutionEngineCallDepthRecorder<1> _executionEngineCallDepthRecorder(v4);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- template<int Frames = 1>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- struct ExecutionEngineCallDepthRecorder
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/qml/jsruntime/qv4vme_moth.cpp.orig 2023-03-11 23:23:17.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/qml/jsruntime/qv4vme_moth.cpp 2023-07-08 21:59:27.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -400,7 +400,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- frame->setReturnValueUndefined();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- ExecutionEngineCallDepthRecorder executionEngineCallDepthRecorder(engine);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ExecutionEngineCallDepthRecorder<1> executionEngineCallDepthRecorder(engine);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Function *function = frame->v4Function;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Q_ASSERT(function->aotFunction);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtmultimedia-macos_10.14_sdk.diff b/aqua/qt6/files/patch-qtmultimedia-macos_10.14_sdk.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 3ec74f9580c..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtmultimedia-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,51 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/multimedia/darwin/qcoreaudioutils.mm.orig 2023-03-12 04:46:05.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/multimedia/darwin/qcoreaudioutils.mm 2023-07-08 23:42:48.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -119,11 +119,13 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- { QAudioFormat::TopFrontLeft, kAudioChannelLabel_VerticalHeightLeft },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- { QAudioFormat::TopFrontRight, kAudioChannelLabel_VerticalHeightRight },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- { QAudioFormat::TopFrontCenter, kAudioChannelLabel_VerticalHeightCenter },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- { QAudioFormat::TopCenter, kAudioChannelLabel_CenterTopMiddle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ { QAudioFormat::TopCenter, kAudioChannelLabel_TopCenterSurround },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- { QAudioFormat::TopBackLeft, kAudioChannelLabel_TopBackLeft },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- { QAudioFormat::TopBackRight, kAudioChannelLabel_TopBackRight },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- { QAudioFormat::TopSideLeft, kAudioChannelLabel_LeftTopMiddle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- { QAudioFormat::TopSideRight, kAudioChannelLabel_RightTopMiddle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- { QAudioFormat::TopBackCenter, kAudioChannelLabel_TopBackCenter },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/multimedia/darwin/camera/qavfcamerabase.mm.orig 2023-03-12 04:46:05.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/multimedia/darwin/camera/qavfcamerabase.mm 2023-07-09 00:18:24.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -93,18 +93,20 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif // defined(Q_OS_IOS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool isFlashAvailable(AVCaptureDevice* captureDevice) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (@available(macOS 10.15, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return [captureDevice isFlashAvailable];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- bool isTorchAvailable(AVCaptureDevice* captureDevice) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (@available(macOS 10.15, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return [captureDevice isTorchAvailable];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return true;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -723,7 +725,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (@available(macOS 10.15, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- AVCaptureDevice *captureDevice = device();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return captureDevice && [captureDevice isExposureModeSupported:AVCaptureExposureModeCustom];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return captureDevice && [captureDevice isExposureModeSupported:AVCaptureExposureMode(3)]; // AVCaptureExposureModeCustom
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return false;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtmultimedia_no_std_unary_function.diff b/aqua/qt6/files/patch-qtmultimedia_no_std_unary_function.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index a21340f8be7..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtmultimedia_no_std_unary_function.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,31 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 82f7f3de0e90bb7d1447cb710ffd2e1b315ae479 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Artem Dyomin <artem.dyomin@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Fri, 26 May 2023 15:15:52 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Remove std::unary_function usage
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-std::unary_function was removed with c++17
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Pick-to: 6.5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Task-number: QTBUG-113782
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I4e330cd1f89dc14936acbccdeee8378ea4938870
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Lars Knoll <lars@knoll.priv.no>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/src/plugins/multimedia/darwin/camera/avfcamerautility.mm b/src/plugins/multimedia/darwin/camera/avfcamerautility.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 4334613..fb73ba3 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/multimedia/darwin/camera/avfcamerautility.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/multimedia/darwin/camera/avfcamerautility.mm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -69,9 +69,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--struct FormatHasNoFPSRange : std::unary_function<AVCaptureDeviceFormat *, bool>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+struct FormatHasNoFPSRange
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- bool operator() (AVCaptureDeviceFormat *format)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool operator() (AVCaptureDeviceFormat *format) const
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- Q_ASSERT(format);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return !format.videoSupportedFrameRateRanges || !format.videoSupportedFrameRateRanges.count;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtpositioning-macos_10.14_sdk.diff b/aqua/qt6/files/patch-qtpositioning-macos_10.14_sdk.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 78fb6eb6aa0..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtpositioning-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,17 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/position/corelocation/qgeopositioninfosource_cl.mm.orig 2023-03-12 03:16:54.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/position/corelocation/qgeopositioninfosource_cl.mm 2023-12-30 18:29:00.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -52,12 +52,14 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifndef Q_OS_TVOS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (newLocation.course >= 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- location.setAttribute(QGeoPositionInfo::Direction, newLocation.course);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if !defined(Q_OS_MACOS) || MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (__builtin_available(iOS 13.4, watchOS 6.2, macOS 10.15.4, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (newLocation.courseAccuracy >= 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- location.setAttribute(QGeoPositionInfo::DirectionAccuracy,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- newLocation.courseAccuracy);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (newLocation.speed >= 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- location.setAttribute(QGeoPositionInfo::GroundSpeed, newLocation.speed);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/patch-qtspeech-macos_10.14_sdk.diff b/aqua/qt6/files/patch-qtspeech-macos_10.14_sdk.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index a06a4d2572b..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/patch-qtspeech-macos_10.14_sdk.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,26 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/plugins/tts/darwin/qtexttospeech_darwin.mm.orig 2023-03-12 05:16:00.000000000 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/plugins/tts/darwin/qtexttospeech_darwin.mm 2023-07-09 02:30:51.000000000 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -2,6 +2,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <AVFoundation/AVFoundation.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <../../System/Library/Frameworks/AVFoundation.framework/Frameworks/AVFAudio.framework/Headers/AVSpeechSynthesis.h> // 10.14 SDK fix
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "qtexttospeech_darwin.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -281,6 +282,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- // only from macOS 10.15 and iOS 13 on
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- const QVoice::Gender gender = [avVoice]{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if (@available(macos 10.15, ios 13, *)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- switch (avVoice.gender) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- case AVSpeechSynthesisVoiceGenderMale:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -291,6 +293,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return QVoice::Unknown;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt6/files/qtbase-qmake-xcode-15.patch b/aqua/qt6/files/qtbase-qmake-xcode-15.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index f479e4a46ec..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt6/files/qtbase-qmake-xcode-15.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,59 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From cdf64b0e47115cc473e1afd1472b4b09e130b2a5 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Mon, 11 Sep 2023 17:01:52 +0200
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] qmake: Don't error out if QMAKE_DEFAULT_LIBDIRS is empty on macOS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-The new linker in Xcode 15 doesn't provide any default linker or
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-framework paths when requested via -v, but still seems to use the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-default paths documented in the ld man page.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-We trust that linker will do the right thing, even if we don't
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-know of its default linker paths.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-We also need to opt out of the default fallback logic to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-set the libdirs to /lib and /usr/lib.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This may result in UnixMakefileGenerator::findLibraries finding
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-different libraries than expected, if additional paths are
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-passed with -L, which will then take precedence for qmake,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-even if the linker itself will use the library from the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-SDK's default paths. This should hopefully not be an issue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-in practice, as we don't turn -lFoo into absolute paths in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-qmake, so the only risk is that we're picking up the wrong
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-prl files and adding additional dependencies that the lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-in the SDK doesn't have.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Change-Id: I2347b26e2df0828471373b0e15b8c9089274c65d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- mkspecs/features/toolchain.prf | 9 ++++++---
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 1 file changed, 6 insertions(+), 3 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/mkspecs/features/toolchain.prf b/mkspecs/features/toolchain.prf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 0040b6c4b9f..bfad10d35bc 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mkspecs/features/toolchain.prf.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mkspecs/features/toolchain.prf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -288,9 +288,12 @@ isEmpty($${target_prefix}.INCDIRS) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- isEmpty(QMAKE_DEFAULT_LIBDIRS)|isEmpty(QMAKE_DEFAULT_INCDIRS): \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ isEmpty(QMAKE_DEFAULT_INCDIRS): \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- !integrity: \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- error("failed to parse default search paths from compiler output")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ error("failed to parse default include paths from compiler output")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ isEmpty(QMAKE_DEFAULT_LIBDIRS): \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ !integrity:!darwin: \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ error("failed to parse default library paths from compiler output")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QMAKE_DEFAULT_LIBDIRS = $$unique(QMAKE_DEFAULT_LIBDIRS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- } else: ghs {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- cmd = $$QMAKE_CXX $$QMAKE_CXXFLAGS -$${LITERAL_HASH} -o /tmp/fake_output /tmp/fake_input.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -411,7 +414,7 @@ isEmpty($${target_prefix}.INCDIRS) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- QMAKE_DEFAULT_INCDIRS = $$split(INCLUDE, $$QMAKE_DIRLIST_SEP)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- unix:if(!cross_compile|host_build) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ unix:!darwin:if(!cross_compile|host_build) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- isEmpty(QMAKE_DEFAULT_INCDIRS): QMAKE_DEFAULT_INCDIRS = /usr/include /usr/local/include
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- isEmpty(QMAKE_DEFAULT_LIBDIRS): QMAKE_DEFAULT_LIBDIRS = /lib /usr/lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/aqua/qt64/Portfile b/aqua/qt64/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index a7588e1c629..a390f9301c2 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/aqua/qt64/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/aqua/qt64/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -43,7 +43,7 @@ supported_archs arm64 x86_64
</span> # conflict with all other versions of qt6
foreach {qt_base qt_info} ${qt6::available_versions} {
if { ${qt_base} ne ${name} } {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- conflicts-append port:${qt_base}-qtbase
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ conflicts-append ${qt_base}-qtbase
</span> }
}
</pre><pre style='margin:0'>
</pre>