From 04d3bb0ec0b2e6e251554bd9a93e375913611e02 Mon Sep 17 00:00:00 2001 From: Mira Grudzinska Date: Sun, 16 Jan 2022 23:34:31 +0100 Subject: [PATCH] svg_loader: fixing cyclic cloning of nodes The reference node doesn't have to be placed inside the defs block, so when refering to it, it is necessary to search the entire node tree. In case of invalid svg file this can lead to circular references. Added prevention against such a sutuation. --- src/loaders/svg/tvgSvgLoader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/loaders/svg/tvgSvgLoader.cpp b/src/loaders/svg/tvgSvgLoader.cpp index 42a49db6..7608d33c 100644 --- a/src/loaders/svg/tvgSvgLoader.cpp +++ b/src/loaders/svg/tvgSvgLoader.cpp @@ -1933,7 +1933,7 @@ static void _copyAttr(SvgNode* to, const SvgNode* from) static void _cloneNode(SvgNode* from, SvgNode* parent) { SvgNode* newNode; - if (!from || !parent) return; + if (!from || !parent || from == parent) return; newNode = _createNode(parent, from->type); if (!newNode) return;