svgio/qa/cppunit/SvgImportTest.cxx       |   21 ++++++++++++++++++---
 svgio/qa/cppunit/data/tdf159594.svg      |    7 +++++++
 svgio/source/svgreader/svgsymbolnode.cxx |    8 +++-----
 3 files changed, 28 insertions(+), 8 deletions(-)

New commits:
commit acbf0d017b774e9779503f1aef943c6d7f88ec39
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Tue Feb 6 12:50:59 2024 +0100
Commit:     Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
CommitDate: Thu Feb 15 21:34:05 2024 +0100

    tdf#159601, tdf#159594: reuse target for symbols' children
    
    Regression from e7186b49a9a0b24ddc3b1c5384b5d9facb03518c
    "tdf#158445: support viewBox in symbol elements"
    
    Change-Id: Ie2198c47149def17fa3cb612046b61bf32e873bf
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163046
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    (cherry picked from commit 8b7dbf40a06bc900562887889c17606ae5ef0587)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163015
    Tested-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163127
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>
    (cherry picked from commit 81454c1c3a98860a82fa54fd3a417d3bcb72f8ae)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163276
    Tested-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com>
    Reviewed-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com>

diff --git a/svgio/qa/cppunit/SvgImportTest.cxx 
b/svgio/qa/cppunit/SvgImportTest.cxx
index b485aa16e38c..661c1520a457 100644
--- a/svgio/qa/cppunit/SvgImportTest.cxx
+++ b/svgio/qa/cppunit/SvgImportTest.cxx
@@ -1597,9 +1597,24 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf158445)
 
     CPPUNIT_ASSERT (pDocument);
 
-    assertXPath(pDocument, 
"/primitive2D/transform/transform/transform/transform/polypolygoncolor", 
"color", "#000000");
-    assertXPath(pDocument, 
"/primitive2D/transform/transform/transform/transform/polypolygoncolor/polypolygon",
 "height", "8.052");
-    assertXPath(pDocument, 
"/primitive2D/transform/transform/transform/transform/polypolygoncolor/polypolygon",
 "width", "5.328");
+    assertXPath(pDocument, 
"/primitive2D/transform/mask/transform/transform/transform/polypolygoncolor", 
"color", "#000000");
+    assertXPath(pDocument, 
"/primitive2D/transform/mask/transform/transform/transform/polypolygoncolor/polypolygon",
 "height", "8.052");
+    assertXPath(pDocument, 
"/primitive2D/transform/mask/transform/transform/transform/polypolygoncolor/polypolygon",
 "width", "5.328");
+}
+
+CPPUNIT_TEST_FIXTURE(Test, testTdf159594)
+{
+    Primitive2DSequence aSequence = 
parseSvg(u"/svgio/qa/cppunit/data/tdf159594.svg");
+    CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(aSequence.getLength()));
+
+    drawinglayer::Primitive2dXmlDump dumper;
+    xmlDocUniquePtr pDocument = 
dumper.dumpAndParse(Primitive2DContainer(aSequence));
+
+    CPPUNIT_ASSERT (pDocument);
+
+    assertXPath(pDocument, 
"/primitive2D/transform/transform/polypolygoncolor", "color", "#000000");
+    assertXPath(pDocument, 
"/primitive2D/transform/transform/polypolygoncolor/polypolygon", "height", 
"11.671875");
+    assertXPath(pDocument, 
"/primitive2D/transform/transform/polypolygoncolor/polypolygon", "width", 
"7.5");
 }
 
 CPPUNIT_TEST_FIXTURE(Test, testTdf97663)
diff --git a/svgio/qa/cppunit/data/tdf159594.svg 
b/svgio/qa/cppunit/data/tdf159594.svg
new file mode 100644
index 000000000000..c2b470ec0fdc
--- /dev/null
+++ b/svgio/qa/cppunit/data/tdf159594.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; viewBox="0 0 100 100" version="1.1">
+<symbol overflow="visible" id="glyph">
+<path style="stroke:none;" d="M 1.3125 -11.671875 L 8.8125 -11.671875 L 8.8125 
-11 L 4.578125 0 L 2.9375 0 L 6.921875 -10.34375 L 1.3125 -10.34375 Z M 1.3125 
-11.671875 "/>
+</symbol>
+<use xlink:href="#glyph" x="40" y="30"/>
+</svg>
diff --git a/svgio/source/svgreader/svgsymbolnode.cxx 
b/svgio/source/svgreader/svgsymbolnode.cxx
index b5125357f61c..222880d1cba2 100644
--- a/svgio/source/svgreader/svgsymbolnode.cxx
+++ b/svgio/source/svgreader/svgsymbolnode.cxx
@@ -126,12 +126,10 @@ namespace svgio::svgreader
 
         void 
SvgSymbolNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DContainer&
 rTarget, bool bReferenced) const
         {
-            drawinglayer::primitive2d::Primitive2DContainer aNewTarget;
-
             // decompose children
-            SvgNode::decomposeSvgNode(aNewTarget, bReferenced);
+            SvgNode::decomposeSvgNode(rTarget, bReferenced);
 
-            if(aNewTarget.empty())
+            if (rTarget.empty())
                 return;
 
             if(getViewBox())
@@ -157,7 +155,7 @@ namespace svgio::svgreader
                 const drawinglayer::primitive2d::Primitive2DReference xRef(
                     new drawinglayer::primitive2d::TransformPrimitive2D(
                         aEmbeddingTransform,
-                        std::move(aNewTarget)));
+                        
drawinglayer::primitive2d::Primitive2DContainer(rTarget)));
 
                 rTarget.push_back(xRef);
             }

Reply via email to