[Libreoffice-commits] core.git: svgio/qa svgio/source
Joren De Cuyper
jorendc at libreoffice.org
Tue Jul 15 07:28:56 PDT 2014
svgio/qa/cppunit/SvgImportTest.cxx | 3 +++
svgio/qa/cppunit/data/RectWithStylesByGroup.svg | 18 ++++++++++++++++++
svgio/source/svgreader/svggnode.cxx | 8 +++++++-
3 files changed, 28 insertions(+), 1 deletion(-)
New commits:
commit 2dbd2cb9a55c90f4f3db3a781526cc2246d0bdd7
Author: Joren De Cuyper <jorendc at libreoffice.org>
Date: Tue Jul 15 13:52:10 2014 +0200
Avoid infinite loop when gathering "g" element styles
Same way of how fdo#74743 is fixed 3b7472b284131c09d91b69f26d5d26d54648f939
Change-Id: If6cc8eb6ff89b0081f27ff75a9b60a3e81cff1bd
Reviewed-on: https://gerrit.libreoffice.org/10326
Reviewed-by: Tomaž Vajngerl <quikee at gmail.com>
Tested-by: Tomaž Vajngerl <quikee at gmail.com>
diff --git a/svgio/qa/cppunit/SvgImportTest.cxx b/svgio/qa/cppunit/SvgImportTest.cxx
index 23fcf90..a5e5e17 100644
--- a/svgio/qa/cppunit/SvgImportTest.cxx
+++ b/svgio/qa/cppunit/SvgImportTest.cxx
@@ -82,6 +82,9 @@ void Test::testStyles()
Primitive2DSequence maSequenceRectWithParentStyle = parseSvg("/svgio/qa/cppunit/data/RectWithParentStyles.svg");
CPPUNIT_ASSERT_EQUAL(1, (int) maSequenceRectWithParentStyle.getLength());
+ Primitive2DSequence maSequenceRectWithStylesByGroup = parseSvg("/svgio/qa/cppunit/data/RectWithStylesByGroup.svg");
+ CPPUNIT_ASSERT_EQUAL(1, (int) maSequenceRectWithStylesByGroup.getLength());
+
// TODO: Test if the 3 sequences are equal..
//const Primitive2DReference xReference(maSequenceRect[0]);
}
diff --git a/svgio/qa/cppunit/data/RectWithStylesByGroup.svg b/svgio/qa/cppunit/data/RectWithStylesByGroup.svg
new file mode 100644
index 0000000..6fefdf2
--- /dev/null
+++ b/svgio/qa/cppunit/data/RectWithStylesByGroup.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
+ width="10cm" height="5cm" viewBox="0 0 1000 500">
+ <defs>
+ <style type="text/css"><![CDATA[
+ g {
+ fill: red;
+ stroke: blue;
+ stroke-width: 3
+ }
+ ]]></style>
+ </defs>
+<g>
+ <rect x="200" y="100" width="600" height="300"/>
+</g>
+</svg>
diff --git a/svgio/source/svgreader/svggnode.cxx b/svgio/source/svgreader/svggnode.cxx
index 82d3d5d..45fa6a3 100644
--- a/svgio/source/svgreader/svggnode.cxx
+++ b/svgio/source/svgreader/svggnode.cxx
@@ -43,7 +43,13 @@ namespace svgio
const SvgStyleAttributes* SvgGNode::getSvgStyleAttributes() const
{
- return checkForCssStyle(OUString("g"), maSvgStyleAttributes);
+ const SvgStyleAttributes* aCheckCssStyle = checkForCssStyle(OUString("g"), maSvgStyleAttributes);
+ const SvgStyleAttributes* aGetCssStyleParent = maSvgStyleAttributes.getCssStyleParent();
+
+ if (aGetCssStyleParent == NULL)
+ return aCheckCssStyle;
+
+ return aGetCssStyleParent;
}
void SvgGNode::parseAttribute(const OUString& rTokenName, SVGToken aSVGToken, const OUString& aContent)
More information about the Libreoffice-commits
mailing list