Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package qt6-svg for openSUSE:Factory checked in at 2023-12-04 23:00:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/qt6-svg (Old) and /work/SRC/openSUSE:Factory/.qt6-svg.new.25432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-svg" Mon Dec 4 23:00:21 2023 rev:28 rq:1130431 version:6.6.1 Changes: -------- --- /work/SRC/openSUSE:Factory/qt6-svg/qt6-svg.changes 2023-10-17 20:24:36.762472020 +0200 +++ /work/SRC/openSUSE:Factory/.qt6-svg.new.25432/qt6-svg.changes 2023-12-04 23:00:38.305736173 +0100 @@ -1,0 +2,9 @@ +Mon Nov 27 14:00:19 UTC 2023 - Christophe Marin <[email protected]> + +- Update to 6.6.1: + * https://www.qt.io/blog/qt-6.6.1-released +- Drop patches, merged upstream: + * 0001-fix-nullptr-derefence-with-invalid-SVG.patch + * 0002-make-sure-we-do-not-load-invalid-SVGs-twice.patch + +------------------------------------------------------------------- Old: ---- 0001-fix-nullptr-derefence-with-invalid-SVG.patch 0002-make-sure-we-do-not-load-invalid-SVGs-twice.patch qtsvg-everywhere-src-6.6.0.tar.xz New: ---- qtsvg-everywhere-src-6.6.1.tar.xz BETA DEBUG BEGIN: Old:- Drop patches, merged upstream: * 0001-fix-nullptr-derefence-with-invalid-SVG.patch * 0002-make-sure-we-do-not-load-invalid-SVGs-twice.patch Old: * 0001-fix-nullptr-derefence-with-invalid-SVG.patch * 0002-make-sure-we-do-not-load-invalid-SVGs-twice.patch BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qt6-svg.spec ++++++ --- /var/tmp/diff_new_pack.vWbDUr/_old 2023-12-04 23:00:38.909757521 +0100 +++ /var/tmp/diff_new_pack.vWbDUr/_new 2023-12-04 23:00:38.913757662 +0100 @@ -16,7 +16,7 @@ # -%define real_version 6.6.0 +%define real_version 6.6.1 %define short_version 6.6 %define tar_name qtsvg-everywhere-src %define tar_suffix %{nil} @@ -27,16 +27,12 @@ %endif # Name: qt6-svg%{?pkg_suffix} -Version: 6.6.0 +Version: 6.6.1 Release: 0 Summary: Classes for rendering and displaying SVG drawings License: LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later) URL: https://www.qt.io Source: https://download.qt.io/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz -# PATCH-FIX-UPSTREAM 0001-fix-nullptr-derefence-with-invalid-SVG.patch QTBUG-117944 boo#1216269 -Patch01: 0001-fix-nullptr-derefence-with-invalid-SVG.patch -# PATCH-FIX-UPSTREAM 0002-make-sure-we-do-not-load-invalid-SVGs-twice.patch boo#1216269 -Patch02: 0002-make-sure-we-do-not-load-invalid-SVGs-twice.patch Source99: qt6-svg-rpmlintrc BuildRequires: pkgconfig BuildRequires: qt6-core-private-devel ++++++ qtsvg-everywhere-src-6.6.0.tar.xz -> qtsvg-everywhere-src-6.6.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtsvg-everywhere-src-6.6.0/.cmake.conf new/qtsvg-everywhere-src-6.6.1/.cmake.conf --- old/qtsvg-everywhere-src-6.6.0/.cmake.conf 2023-10-02 05:05:52.000000000 +0200 +++ new/qtsvg-everywhere-src-6.6.1/.cmake.conf 2023-11-20 06:28:45.000000000 +0100 @@ -1,3 +1,3 @@ -set(QT_REPO_MODULE_VERSION "6.6.0") +set(QT_REPO_MODULE_VERSION "6.6.1") set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1") set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_AS_CONST=1") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtsvg-everywhere-src-6.6.0/.tag new/qtsvg-everywhere-src-6.6.1/.tag --- old/qtsvg-everywhere-src-6.6.0/.tag 2023-10-02 05:05:52.000000000 +0200 +++ new/qtsvg-everywhere-src-6.6.1/.tag 2023-11-20 06:28:45.000000000 +0100 @@ -1 +1 @@ -da7e04eaa56c54d5486e39d2e0bd0ddb2a62b74b +18801e1b024dad9401fc655549a6bb123439cfa3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtsvg-everywhere-src-6.6.0/dependencies.yaml new/qtsvg-everywhere-src-6.6.1/dependencies.yaml --- old/qtsvg-everywhere-src-6.6.0/dependencies.yaml 2023-10-02 05:05:52.000000000 +0200 +++ new/qtsvg-everywhere-src-6.6.1/dependencies.yaml 2023-11-20 06:28:45.000000000 +0100 @@ -1,4 +1,4 @@ dependencies: ../qtbase: - ref: 33f5e985e480283bb0ca9dea5f82643e825ba87c + ref: e2cbce919ccefcae2b18f90257d67bc6e24c3c94 required: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtsvg-everywhere-src-6.6.0/src/plugins/imageformats/svg/qsvgiohandler.cpp new/qtsvg-everywhere-src-6.6.1/src/plugins/imageformats/svg/qsvgiohandler.cpp --- old/qtsvg-everywhere-src-6.6.0/src/plugins/imageformats/svg/qsvgiohandler.cpp 2023-10-02 05:05:52.000000000 +0200 +++ new/qtsvg-everywhere-src-6.6.1/src/plugins/imageformats/svg/qsvgiohandler.cpp 2023-11-20 06:28:45.000000000 +0100 @@ -19,7 +19,7 @@ { public: QSvgIOHandlerPrivate(QSvgIOHandler *qq) - : q(qq), loaded(false), readDone(false), backColor(Qt::transparent) + : q(qq), loadAttempted(false), loadStatus(false), readDone(false), backColor(Qt::transparent) {} bool load(QIODevice *device); @@ -31,7 +31,8 @@ QRect clipRect; QSize scaledSize; QRect scaledClipRect; - bool loaded; + bool loadAttempted; + bool loadStatus; bool readDone; QColor backColor; }; @@ -39,8 +40,9 @@ bool QSvgIOHandlerPrivate::load(QIODevice *device) { - if (loaded) - return true; + if (loadAttempted) + return loadStatus; + loadAttempted = true; if (q->format().isEmpty()) q->canRead(); @@ -63,10 +65,10 @@ if (res) { defaultSize = r.defaultSize(); - loaded = true; + loadStatus = true; } - return loaded; + return loadStatus; } @@ -105,7 +107,7 @@ { if (!device()) return false; - if (d->loaded && !d->readDone) + if (d->loadStatus && !d->readDone) return true; // Will happen if we have been asked for the size bool isCompressed = false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtsvg-everywhere-src-6.6.0/src/svg/qsvggraphics.cpp new/qtsvg-everywhere-src-6.6.1/src/svg/qsvggraphics.cpp --- old/qtsvg-everywhere-src-6.6.0/src/svg/qsvggraphics.cpp 2023-10-02 05:05:52.000000000 +0200 +++ new/qtsvg-everywhere-src-6.6.1/src/svg/qsvggraphics.cpp 2023-11-20 06:28:45.000000000 +0100 @@ -319,8 +319,10 @@ QFontMetricsF fm(font); int charCount = 0; - for (int i = 0; i < m_tspans.size(); ++i) - charCount += m_tspans.at(i)->text().size(); + for (int i = 0; i < m_tspans.size(); ++i) { + if (m_tspans.at(i) != LINEBREAK) + charCount += m_tspans.at(i)->text().size(); + } QRectF approxMaximumBrect(m_coord.x(), m_coord.y(), @@ -343,6 +345,9 @@ qreal originalFontSize = p->font().pointSizeF(); qreal maxFontSize = originalFontSize; for (const QSvgTspan *span : std::as_const(m_tspans)) { + if (span == LINEBREAK) + continue; + numChars += span->text().size(); QSvgFontStyle *style = static_cast<QSvgFontStyle *>(span->styleProperty(QSvgStyleProperty::FONT)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtsvg-everywhere-src-6.6.0/src/svg/qsvghandler.cpp new/qtsvg-everywhere-src-6.6.1/src/svg/qsvghandler.cpp --- old/qtsvg-everywhere-src-6.6.0/src/svg/qsvghandler.cpp 2023-10-02 05:05:52.000000000 +0200 +++ new/qtsvg-everywhere-src-6.6.1/src/svg/qsvghandler.cpp 2023-11-20 06:28:45.000000000 +0100 @@ -3606,6 +3606,8 @@ static bool detectCycles(const QSvgNode *node, QList<const QSvgUse *> active = {}) { + if (Q_UNLIKELY(!node)) + return false; switch (node->type()) { case QSvgNode::DOC: case QSvgNode::G: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtsvg-everywhere-src-6.6.0/tests/auto/qsvgplugin/CMakeLists.txt new/qtsvg-everywhere-src-6.6.1/tests/auto/qsvgplugin/CMakeLists.txt --- old/qtsvg-everywhere-src-6.6.0/tests/auto/qsvgplugin/CMakeLists.txt 2023-10-02 05:05:52.000000000 +0200 +++ new/qtsvg-everywhere-src-6.6.1/tests/auto/qsvgplugin/CMakeLists.txt 2023-11-20 06:28:45.000000000 +0100 @@ -37,6 +37,9 @@ "simple_Utf16BE.svg" "simple_Utf32LE.svg" "simple_Utf32BE.svg" + "invalid_xml.svg" + "xml_not_svg.svg" + "invalid_then_valid.svg" ) qt_internal_add_resource(tst_qsvgplugin "resources" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtsvg-everywhere-src-6.6.0/tests/auto/qsvgplugin/invalid_then_valid.svg new/qtsvg-everywhere-src-6.6.1/tests/auto/qsvgplugin/invalid_then_valid.svg --- old/qtsvg-everywhere-src-6.6.0/tests/auto/qsvgplugin/invalid_then_valid.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/qtsvg-everywhere-src-6.6.1/tests/auto/qsvgplugin/invalid_then_valid.svg 2023-11-20 06:28:45.000000000 +0100 @@ -0,0 +1,18 @@ +<!-- html-header type=current begin --> + + <!DOCTYPE html> + + <html lang="en"> + <head> + <!-- Render IE9 --> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + </head> + +<body class="anon comments "> + +</body></html> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<svg version="1.0" xmlns="http://www.w3.org/2000/svg"> + <circle cx="50" cy="50" r="25" fill="#00ff00" /> +</svg> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtsvg-everywhere-src-6.6.0/tests/auto/qsvgplugin/invalid_xml.svg new/qtsvg-everywhere-src-6.6.1/tests/auto/qsvgplugin/invalid_xml.svg --- old/qtsvg-everywhere-src-6.6.0/tests/auto/qsvgplugin/invalid_xml.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/qtsvg-everywhere-src-6.6.1/tests/auto/qsvgplugin/invalid_xml.svg 2023-11-20 06:28:45.000000000 +0100 @@ -0,0 +1,2 @@ +<!--abcd + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtsvg-everywhere-src-6.6.0/tests/auto/qsvgplugin/tst_qsvgplugin.cpp new/qtsvg-everywhere-src-6.6.1/tests/auto/qsvgplugin/tst_qsvgplugin.cpp --- old/qtsvg-everywhere-src-6.6.0/tests/auto/qsvgplugin/tst_qsvgplugin.cpp 2023-10-02 05:05:52.000000000 +0200 +++ new/qtsvg-everywhere-src-6.6.1/tests/auto/qsvgplugin/tst_qsvgplugin.cpp 2023-11-20 06:28:45.000000000 +0100 @@ -67,6 +67,9 @@ QTest::newRow("wide_size") << QFINDTESTDATA("wide_size.svg") << 100 << 200; QTest::newRow("wide_size_viewbox") << QFINDTESTDATA("wide_size_viewbox.svg") << 100 << 200; QTest::newRow("wide_viewbox") << QFINDTESTDATA("wide_viewbox.svg") << 50 << 100; + QTest::newRow("invalid_xml") << QFINDTESTDATA("invalid_xml.svg") << 0 << 0; + QTest::newRow("xml_not_svg") << QFINDTESTDATA("xml_not_svg.svg") << 0 << 0; + QTest::newRow("invalid_then_valid") << QFINDTESTDATA("invalid_then_valid.svg") << 0 << 0; } void tst_QSvgPlugin::checkSize() @@ -84,10 +87,19 @@ QImage image; plugin.read(&image); + // Check that plugin survives double load + QVariant sizeVariant = plugin.option(QImageIOHandler::Size); + file.close(); QCOMPARE(imageHeight, image.height()); QCOMPARE(imageWidth, image.width()); + + QSize size = qvariant_cast<QSize>(sizeVariant); + if (size.isEmpty()) + size = QSize(0, 0); // don't distinguish between null and invalid QSize + QCOMPARE(size.width(), imageWidth); + QCOMPARE(size.height(), imageHeight); } void tst_QSvgPlugin::checkImageInclude() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtsvg-everywhere-src-6.6.0/tests/auto/qsvgplugin/xml_not_svg.svg new/qtsvg-everywhere-src-6.6.1/tests/auto/qsvgplugin/xml_not_svg.svg --- old/qtsvg-everywhere-src-6.6.0/tests/auto/qsvgplugin/xml_not_svg.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/qtsvg-everywhere-src-6.6.1/tests/auto/qsvgplugin/xml_not_svg.svg 2023-11-20 06:28:45.000000000 +0100 @@ -0,0 +1,13 @@ +<!-- html-header type=current begin --> + + <!DOCTYPE html> + + <html lang="en"> + <head> + <!-- Render IE9 --> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + </head> + +<body class="anon comments "> + +</body></html> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtsvg-everywhere-src-6.6.0/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp new/qtsvg-everywhere-src-6.6.1/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp --- old/qtsvg-everywhere-src-6.6.0/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp 2023-10-02 05:05:52.000000000 +0200 +++ new/qtsvg-everywhere-src-6.6.1/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp 2023-11-20 06:28:45.000000000 +0100 @@ -64,6 +64,7 @@ void imageRendering(); void illegalAnimateTransform_data(); void illegalAnimateTransform(); + void tSpanLineBreak(); #ifndef QT_NO_COMPRESS void testGzLoading(); @@ -1709,5 +1710,17 @@ QVERIFY(!renderer.load(svg)); // also shouldn't assert } +void tst_QSvgRenderer::tSpanLineBreak() +{ + QSvgRenderer renderer; + QVERIFY(renderer.load(QByteArray("<svg><textArea>Foo<tbreak/>Bar</textArea></svg>"))); + + QImage img(50, 50, QImage::Format_ARGB32); + { + QPainter p(&img); + renderer.render(&p); // Don't crash + } +} + QTEST_MAIN(tst_QSvgRenderer) #include "tst_qsvgrenderer.moc"
