diff options
Diffstat (limited to 'dev-qt/qtsvg/files/qtsvg-5.15.3-QTBUG-90744-minus-binarypatch.patch')
-rw-r--r-- | dev-qt/qtsvg/files/qtsvg-5.15.3-QTBUG-90744-minus-binarypatch.patch | 142 |
1 files changed, 0 insertions, 142 deletions
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 deleted file mode 100644 index 1cdd5fd5ffcc..000000000000 --- a/dev-qt/qtsvg/files/qtsvg-5.15.3-QTBUG-90744-minus-binarypatch.patch +++ /dev/null @@ -1,142 +0,0 @@ -From cfc616978b52a396b2ef6900546f7fc086d7cab3 Mon Sep 17 00:00:00 2001 -From: Eirik Aavitsland <eirik.aavitsland@qt.io> -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 <allan.jensen@qt.io> -(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 - |