commit:     a5ff5da513c264e217f2563bd0bac117c4368588
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 17 21:50:31 2022 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Mar 21 11:03:35 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a5ff5da5

dev-qt/qtsvg: 5.15.3 version bump

Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 dev-qt/qtsvg/Manifest                              |   3 +
 ...tsvg-5.15.3-QTBUG-90744-minus-binarypatch.patch | 142 +++++++++++++++++++++
 dev-qt/qtsvg/qtsvg-5.15.3.ebuild                   |  34 +++++
 3 files changed, 179 insertions(+)

diff --git a/dev-qt/qtsvg/Manifest b/dev-qt/qtsvg/Manifest
index c8f4ebb6938c..56140b383aa5 100644
--- a/dev-qt/qtsvg/Manifest
+++ b/dev-qt/qtsvg/Manifest
@@ -1 +1,4 @@
 DIST qtsvg-5.15.2-728012f7.tar.gz 2779740 BLAKE2B 
6db82739d576dbb2d5958e48ee917dce9ce10fdf7af8b561f0c71ef3a90b97935e89f443ed1a95c827d85d87ffbb53595c27057f75bdac11939ba2bc9ef47f36
 SHA512 
ccf16606ff0abc9dce1279d58bd85489d0b1205da953842e12e8a9dad895c53a4420e4bd1aeafca1291f6721e2cc5c1a1178ad1d329832d21cc165646e8448d5
+DIST qtsvg-5.15.3-QTBUG-90744.tar.xz 632 BLAKE2B 
e7f2f52dc546f9520ac2311b417b86d697ab20f8d02318fce76d46b35efcaf3dccdab5377d65c01af3a193df478083733c466e3a778325e73184f84830080686
 SHA512 
1681a2e0395d97b30b49b981e342b7e647108ba19b1472f34239136e1b946da67afaac3454533139a55a0f5f0a5fd167596a2ca7b26e4c018fa41a91dd94cd7b
+DIST qtsvg-5.15.3-gentoo-kde-1.tar.xz 7384 BLAKE2B 
25d0b5216ab6c0fc8758a55138000b641d2ca57a64095c1117c1d5da59cca3dda890fe2b0b8589d5be0ac19e73f3a329af5710dfa163a25609f068d673f830b5
 SHA512 
4b512bb8ea1ee6e38b28ad52a34a1f2b6a6a7ac72c341b8faacb599f6cd770924ae7a473052c59783653a734e8061d0167633954a6d3d9ae2ed33e0a65adeb44
+DIST qtsvg-everywhere-opensource-src-5.15.3.tar.xz 1886104 BLAKE2B 
feced6caaa2e2be089ffed77f32d3b0de899b8a97632234ca8aa9d1f34fc0ee94ecd44227bb7c40ec49f0a76b305dc29ad23498bff3c62f45054854ed632b1d1
 SHA512 
288ce98bb6dd746564c7ffbd0d8221d0816c62b7e33424cd21d945b40308292ec9a0b1e2b9cca6ce91d606c06813f05068cad590d827810383175bebfa8ab527

diff --git 
a/dev-qt/qtsvg/files/qtsvg-5.15.3-QTBUG-90744-minus-binarypatch.patch 
b/dev-qt/qtsvg/files/qtsvg-5.15.3-QTBUG-90744-minus-binarypatch.patch
new file mode 100644
index 000000000000..1cdd5fd5ffcc
--- /dev/null
+++ b/dev-qt/qtsvg/files/qtsvg-5.15.3-QTBUG-90744-minus-binarypatch.patch
@@ -0,0 +1,142 @@
+From cfc616978b52a396b2ef6900546f7fc086d7cab3 Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <[email protected]>
+Date: Thu, 8 Apr 2021 13:19:52 +0200
+Subject: [PATCH 3/9] Make image handler accept UTF-16/UTF-32 encoded SVGs
+
+The canRead() header checks assumed 8 bit encoding.
+
+Pick-to: 6.1 6.0 5.15
+Fixes: QTBUG-90744
+Change-Id: Ibe934fe9ed31b89ee0fbfc4562aa66ab1b359225
+Reviewed-by: Allan Sandfeld Jensen <[email protected]>
+(cherry picked from commit 45fb1f07eaa984af40fca9f12b8f3d27f7b0e9ac)
+---
+ .../imageformats/svg/qsvgiohandler.cpp        |  37 +++++++++++-------
+ tests/auto/qsvgplugin/simple_Utf16BE.svg      | Bin 0 -> 228 bytes
+ tests/auto/qsvgplugin/simple_Utf16LE.svg      | Bin 0 -> 228 bytes
+ tests/auto/qsvgplugin/simple_Utf32BE.svg      | Bin 0 -> 456 bytes
+ tests/auto/qsvgplugin/simple_Utf32LE.svg      | Bin 0 -> 456 bytes
+ tests/auto/qsvgplugin/simple_Utf8.svg         |   3 ++
+ tests/auto/qsvgplugin/tst_qsvgplugin.cpp      |  32 +++++++++++++++
+ 7 files changed, 57 insertions(+), 15 deletions(-)
+ create mode 100644 tests/auto/qsvgplugin/simple_Utf16BE.svg
+ create mode 100644 tests/auto/qsvgplugin/simple_Utf16LE.svg
+ create mode 100644 tests/auto/qsvgplugin/simple_Utf32BE.svg
+ create mode 100644 tests/auto/qsvgplugin/simple_Utf32LE.svg
+ create mode 100644 tests/auto/qsvgplugin/simple_Utf8.svg
+
+diff --git a/src/plugins/imageformats/svg/qsvgiohandler.cpp 
b/src/plugins/imageformats/svg/qsvgiohandler.cpp
+index bd39b2a..4136aaf 100644
+--- a/src/plugins/imageformats/svg/qsvgiohandler.cpp
++++ b/src/plugins/imageformats/svg/qsvgiohandler.cpp
+@@ -118,6 +118,24 @@ QSvgIOHandler::~QSvgIOHandler()
+     delete d;
+ }
+ 
++static bool isPossiblySvg(QIODevice *device, bool *isCompressed = nullptr)
++{
++    constexpr int bufSize = 64;
++    char buf[bufSize];
++    const qint64 readLen = device->peek(buf, bufSize);
++    if (readLen < 8)
++        return false;
++#    ifndef QT_NO_COMPRESS
++    if (quint8(buf[0]) == 0x1f && quint8(buf[1]) == 0x8b) {
++        if (isCompressed)
++            *isCompressed = true;
++        return true;
++    }
++#    endif
++    QTextStream str(QByteArray::fromRawData(buf, readLen));
++    QByteArray ba = str.read(16).trimmed().toLatin1();
++    return ba.startsWith("<?xml") || ba.startsWith("<svg") || 
ba.startsWith("<!--") || ba.startsWith("<!DOCTYPE svg");
++}
+ 
+ bool QSvgIOHandler::canRead() const
+ {
+@@ -126,15 +144,9 @@ bool QSvgIOHandler::canRead() const
+     if (d->loaded && !d->readDone)
+         return true;        // Will happen if we have been asked for the size
+ 
+-    QByteArray buf = device()->peek(16);
+-#ifndef QT_NO_COMPRESS
+-    if (buf.startsWith("\x1f\x8b")) {
+-        setFormat("svgz");
+-        return true;
+-    } else
+-#endif
+-    if (buf.contains("<?xml") || buf.contains("<svg") || buf.contains("<!--") 
|| buf.contains("<!DOCTYPE svg")) {
+-        setFormat("svg");
++    bool isCompressed = false;
++    if (isPossiblySvg(device(), &isCompressed)) {
++        setFormat(isCompressed ? "svgz" : "svg");
+         return true;
+     }
+     return false;
+@@ -260,12 +272,7 @@ bool QSvgIOHandler::supportsOption(ImageOption option) 
const
+ 
+ bool QSvgIOHandler::canRead(QIODevice *device)
+ {
+-    QByteArray buf = device->peek(16);
+-    return
+-#ifndef QT_NO_COMPRESS
+-            buf.startsWith("\x1f\x8b") ||
+-#endif
+-            buf.contains("<?xml") || buf.contains("<svg") || 
buf.contains("<!--") || buf.contains("<!DOCTYPE svg");
++    return isPossiblySvg(device);
+ }
+ 
+ QT_END_NAMESPACE
+diff --git a/tests/auto/qsvgplugin/tst_qsvgplugin.cpp 
b/tests/auto/qsvgplugin/tst_qsvgplugin.cpp
+index e1f84f3..73bbe8b 100644
+--- a/tests/auto/qsvgplugin/tst_qsvgplugin.cpp
++++ b/tests/auto/qsvgplugin/tst_qsvgplugin.cpp
+@@ -61,6 +61,8 @@ private slots:
+     void checkSize_data();
+     void checkSize();
+     void checkImageInclude();
++    void encodings_data();
++    void encodings();
+ };
+ 
+ 
+@@ -145,6 +147,36 @@ void tst_QSvgPlugin::checkImageInclude()
+     logMessages.clear();
+ }
+ 
++void tst_QSvgPlugin::encodings_data()
++{
++    QTest::addColumn<QString>("filename");
++
++    QTest::newRow("utf-8") << QFINDTESTDATA("simple_Utf8.svg");
++    QTest::newRow("utf-16LE") << QFINDTESTDATA("simple_Utf16LE.svg");
++    QTest::newRow("utf-16BE") << QFINDTESTDATA("simple_Utf16BE.svg");
++    QTest::newRow("utf-32LE") << QFINDTESTDATA("simple_Utf32LE.svg");
++    QTest::newRow("utf-32BE") << QFINDTESTDATA("simple_Utf32BE.svg");
++}
++
++void tst_QSvgPlugin::encodings()
++{
++    QFETCH(QString, filename);
++
++    {
++        QFile file(filename);
++        file.open(QIODevice::ReadOnly);
++        QVERIFY(QSvgIOHandler::canRead(&file));
++    }
++
++    QFile file(filename);
++    file.open(QIODevice::ReadOnly);
++    QSvgIOHandler plugin;
++    plugin.setDevice(&file);
++    QVERIFY(plugin.canRead());
++    QImage img;
++    QVERIFY(plugin.read(&img));
++    QCOMPARE(img.size(), QSize(50, 50));
++}
+ 
+ QTEST_MAIN(tst_QSvgPlugin)
+ #include "tst_qsvgplugin.moc"
+-- 
+2.35.1
+

diff --git a/dev-qt/qtsvg/qtsvg-5.15.3.ebuild b/dev-qt/qtsvg/qtsvg-5.15.3.ebuild
new file mode 100644
index 000000000000..b73a9e22a0dc
--- /dev/null
+++ b/dev-qt/qtsvg/qtsvg-5.15.3.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+QT5_KDEPATCHSET_REV=1
+inherit qt5-build
+
+DESCRIPTION="SVG rendering library for the Qt5 framework"
+
+if [[ ${QT5_BUILD_TYPE} == release ]]; then
+       KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86"
+       SRC_URI+=" 
https://dev.gentoo.org/~asturm/distfiles/${P}-QTBUG-90744.tar.xz";
+fi
+
+IUSE=""
+
+RDEPEND="
+       =dev-qt/qtcore-${QT5_PV}*
+       =dev-qt/qtgui-${QT5_PV}*
+       =dev-qt/qtwidgets-${QT5_PV}*
+       sys-libs/zlib:=
+"
+DEPEND="${RDEPEND}
+       test? ( =dev-qt/qtxml-${QT5_PV}* )
+"
+
+PATCHES=( "${FILESDIR}"/${P}-QTBUG-90744-minus-binarypatch.patch )
+
+src_unpack() {
+       default
+       # contains binary patch, so it is applied manually instead
+       rm 
"${WORKDIR}"/${P}-gentoo-kde-1/0003-Make-image-handler-accept-UTF-16-UTF-32-encoded-SVGs.patch
 || die
+}

Reply via email to