diff options
author | Jürgen Schmidt <jsc@apache.org> | 2014-03-28 10:52:29 +0000 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2014-04-02 14:31:30 +0300 |
commit | 83d0a8adbf4008780dc13347fa932d11f651ebc2 (patch) | |
tree | 7c6ec37b95ace11863f7b03289bf3f2f8a881acd /tools | |
parent | 87f7e6577b4e052e083d59750d40d51c894c6053 (diff) |
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)
Diffstat (limited to 'tools')
-rw-r--r-- | tools/source/generic/poly.cxx | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tools/source/generic/poly.cxx b/tools/source/generic/poly.cxx index 60e4a145377b..31a9bf82eafd 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 |