[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - tools/source

Jürgen Schmidt jsc at apache.org
Fri Mar 28 09:31:07 PDT 2014


 tools/source/generic/poly.cxx |   13 +++++++++++++
 1 file changed, 13 insertions(+)

New commits:
commit ab71a4512557b7290cd7b1b4923463052acf164e
Author: Jürgen Schmidt <jsc at apache.org>
Date:   Fri Mar 28 10:52:29 2014 +0000

    Resolves: #i124453# check if the resulting polygon...
    
    has already exceeded the number of points (2^16) that can be handled by a tools
    polygon
    
    (cherry picked from commit 804e547d70552fd64e1344d538427f8898824b43)
    
    Change-Id: I437a84493e264f7b650561599170e831da20c9aa
    (cherry picked from commit a9582c05f854cad02710178ab7fa79498573269e)

diff --git a/tools/source/generic/poly.cxx b/tools/source/generic/poly.cxx
index 60e4a14..31a9bf8 100644
--- a/tools/source/generic/poly.cxx
+++ b/tools/source/generic/poly.cxx
@@ -911,6 +911,19 @@ void Polygon::AdaptiveSubdivide( Polygon& rResult, const double d ) const
             }
 
             *aPointIter++ = mpImplPolygon->mpPointAry[ i++ ];
+
+            if (aPoints.size() >= SAL_MAX_UINT16)
+            {
+                OSL_ENSURE(aPoints.size() < SAL_MAX_UINT16,
+                    "Polygon::AdapativeSubdivision created polygon too many points;"
+                    " using original polygon instead");
+
+                // The resulting polygon can not hold all the points
+                // that we have created so far.  Stop the subdivision
+                // and return a copy of the unmodified polygon.
+                rResult = *this;
+                return;
+            }
         }
 
         // fill result polygon


More information about the Libreoffice-commits mailing list