svgio/source/svgreader/svgstyleattributes.cxx |   16 +++++++---------
 svgio/source/svgreader/svgsvgnode.cxx         |    3 ++-
 2 files changed, 9 insertions(+), 10 deletions(-)

New commits:
commit 8d15b2c3dbad718782d3923ece0eb6816beafab0
Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com>
Date:   Wed Apr 16 09:40:29 2014 +0200

    fdo#74743 avoid infinite loop when gathering "svg" element styles
    
    Change-Id: Ifcfd0c64302b9174510e3d774607f5ca60173885
    Signed-off-by: Andras Timar <andras.ti...@collabora.com>

diff --git a/svgio/source/svgreader/svgstyleattributes.cxx 
b/svgio/source/svgreader/svgstyleattributes.cxx
index ecddfbf..0fae736 100644
--- a/svgio/source/svgreader/svgstyleattributes.cxx
+++ b/svgio/source/svgreader/svgstyleattributes.cxx
@@ -205,17 +205,15 @@ namespace svgio
 
         const SvgStyleAttributes* SvgStyleAttributes::getParentStyle() const
         {
-            if(getCssStyleParent())
-            {
-                return getCssStyleParent();
-            }
+            const SvgStyleAttributes* pParentStyle = getCssStyleParent();
 
-            if(mrOwner.getParent())
-            {
-                return mrOwner.getParent()->getSvgStyleAttributes();
-            }
+            // no parent style set, check parent for its style attributes
+            if(pParentStyle == NULL && mrOwner.getParent() != NULL)
+               pParentStyle = mrOwner.getParent()->getSvgStyleAttributes();
 
-            return 0;
+            if (pParentStyle != this) // to prevent infinite loop
+                return pParentStyle;
+            return NULL;
         }
 
         void SvgStyleAttributes::add_text(
diff --git a/svgio/source/svgreader/svgsvgnode.cxx 
b/svgio/source/svgreader/svgsvgnode.cxx
index 8e107c6..cde5387 100644
--- a/svgio/source/svgreader/svgsvgnode.cxx
+++ b/svgio/source/svgreader/svgsvgnode.cxx
@@ -60,7 +60,8 @@ namespace svgio
 
         const SvgStyleAttributes* SvgSvgNode::getSvgStyleAttributes() const
         {
-            return checkForCssStyle(OUString("svg"), maSvgStyleAttributes);
+            checkForCssStyle(OUString("svg"), maSvgStyleAttributes);
+            return maSvgStyleAttributes.getCssStyleParent();
         }
 
         void SvgSvgNode::parseAttribute(const OUString& rTokenName, SVGToken 
aSVGToken, const OUString& aContent)
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to