summaryrefslogtreecommitdiffstats
path: root/src/svg/qsvghandler.cpp
diff options
context:
space:
mode:
authorEirik Aavitsland <eirik.aavitsland@qt.io>2017-11-14 14:47:08 +0100
committerEirik Aavitsland <eirik.aavitsland@qt.io>2017-11-22 11:25:52 +0000
commit1167507b6422cd74a95cf0deffaccada9345dc27 (patch)
tree5da7583a17f8af5d2699bbd29ab12f0e0022fe2b /src/svg/qsvghandler.cpp
parent5bed32c8f5cabcbe22cabfc50a290f832dce6aec (diff)
Fix crash on recursive self-referral in <use> element
Referring to an ancestor in a <use> element would lead to endless recursion. Add checks to avoid recursion, and also emit a warning while parsing. Task-number: QTBUG-64425 Change-Id: I9ee1b9bfef13796cc3f387ff8579c6b13bc4ae9a Reviewed-by: Andy Shaw <andy.shaw@qt.io> (cherry picked from commit 18a2adad907523ea31251ff0b62e3321241a40fa)
Diffstat (limited to 'src/svg/qsvghandler.cpp')
-rw-r--r--src/svg/qsvghandler.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
index d373a99..036b870 100644
--- a/src/svg/qsvghandler.cpp
+++ b/src/svg/qsvghandler.cpp
@@ -3308,6 +3308,8 @@ static QSvgNode *createUseNode(QSvgNode *parent,
if (group) {
QSvgNode *link = group->scopeNode(linkId);
if (link) {
+ if (parent->isDescendantOf(link))
+ qWarning("link #%s is recursive!", qPrintable(linkId));
QPointF pt;
if (!xStr.isNull() || !yStr.isNull()) {
QSvgHandler::LengthType type;