[Libreoffice-commits] core.git: basegfx/source

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Tue Feb 2 06:13:26 UTC 2021


 basegfx/source/polygon/b2dpolypolygoncutter.cxx |    7 +++++++
 1 file changed, 7 insertions(+)

New commits:
commit 8bb759e22e564a9076fdffee8705e62fbe545a35
Author:     Noel Grandin <noel at peralex.com>
AuthorDate: Mon Feb 1 11:22:36 2021 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Tue Feb 2 07:12:49 2021 +0100

    tdf#139002 dont hang opening pathological SVGs
    
    This is a workaround, but
    (a) this contains several pathological SVGs, which have
    clearly been very badly created eg. an svg path with 2699660320
    elements.
    (b) the diagrams all look fine to me, so clearly the winding-rule
    change is not that critical in this case
    
    Change-Id: I48aac512e2de2ae4e63a4d1816c3d4d5901b3bf0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110242
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/basegfx/source/polygon/b2dpolypolygoncutter.cxx b/basegfx/source/polygon/b2dpolypolygoncutter.cxx
index e5094c7dd30d..f314fcb716cc 100644
--- a/basegfx/source/polygon/b2dpolypolygoncutter.cxx
+++ b/basegfx/source/polygon/b2dpolypolygoncutter.cxx
@@ -27,6 +27,7 @@
 #include <basegfx/range/b2drange.hxx>
 #include <basegfx/polygon/b2dpolypolygontools.hxx>
 #include <basegfx/curve/b2dcubicbezier.hxx>
+#include <sal/log.hxx>
 #include <vector>
 #include <algorithm>
 
@@ -721,6 +722,12 @@ namespace basegfx::utils
 
         B2DPolyPolygon createNonzeroConform(const B2DPolyPolygon& rCandidate)
         {
+            if (rCandidate.count() > 1000)
+            {
+                SAL_WARN("basegfx", "this poly is too large, " << rCandidate.count() << " elements, to be able to process timeously, falling back to ignoring the winding rule, which is likely to cause rendering artifacts");
+                return rCandidate;
+            }
+
             B2DPolyPolygon aCandidate;
 
             // remove all self-intersections and intersections


More information about the Libreoffice-commits mailing list