diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-07-23 21:30:05 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-07-24 09:32:08 +0200 |
commit | 20bb79886de5b7e24b6796aaa9811153abda86c9 (patch) | |
tree | 6f40aee21ba2d88f098bbd5988a96baefbd2ce3e /svgio/source/svgreader/svgnode.cxx | |
parent | f5930a2235b8a51b30b4ecf1640bf9a56adffe6b (diff) |
crashtesting: infinite recurse with moz384637-1.svg
Change-Id: Ia4bbc9d471c63812dc3ef490f32e8490bda72bfe
Reviewed-on: https://gerrit.libreoffice.org/57888
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svgio/source/svgreader/svgnode.cxx')
-rw-r--r-- | svgio/source/svgreader/svgnode.cxx | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/svgio/source/svgreader/svgnode.cxx b/svgio/source/svgreader/svgnode.cxx index f6395a24527d..56389ef14124 100644 --- a/svgio/source/svgreader/svgnode.cxx +++ b/svgio/source/svgreader/svgnode.cxx @@ -267,6 +267,7 @@ namespace svgio maDisplay(Display_inline), maCssStyleVector(), mpLocalCssStyle(nullptr), + mbDecomposing(false), mbCssStyleVectorBuilt(false) { OSL_ENSURE(SVGTokenUnknown != maType, "SvgNode with unknown type created (!)"); @@ -464,6 +465,9 @@ namespace svgio void SvgNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DContainer& rTarget, bool bReferenced) const { + if (mbDecomposing) //guard against infinite recurse + return; + if(Display_none == getDisplay()) { return; @@ -499,6 +503,8 @@ namespace svgio if(!rChildren.empty()) { + mbDecomposing = true; + const sal_uInt32 nCount(rChildren.size()); for(sal_uInt32 a(0); a < nCount; a++) @@ -571,6 +577,7 @@ namespace svgio } } } + mbDecomposing = false; } } |