@@ -212,11 +212,14 @@ void ImplPolygon::ImplSetSize( sal_uInt16 nNewSize, bool bResize )
212212 mnPoints = nNewSize;
213213}
214214
215- void ImplPolygon::ImplSplit ( sal_uInt16 nPos, sal_uInt16 nSpace, ImplPolygon const * pInitPoly )
215+ bool ImplPolygon::ImplSplit ( sal_uInt16 nPos, sal_uInt16 nSpace, ImplPolygon const * pInitPoly )
216216{
217217 // Can't fit this in :-(, throw ?
218218 if (mnPoints + nSpace > USHRT_MAX)
219- return ;
219+ {
220+ SAL_WARN (" tools" , " Polygon needs " << mnPoints + nSpace << " points, but only " << USHRT_MAX << " possible" );
221+ return false ;
222+ }
220223
221224 const sal_uInt16 nNewSize = mnPoints + nSpace;
222225 const std::size_t nSpaceSize = static_cast <std::size_t >(nSpace) * sizeof (Point );
@@ -272,6 +275,8 @@ void ImplPolygon::ImplSplit( sal_uInt16 nPos, sal_uInt16 nSpace, ImplPolygon con
272275 mpPointAry = pNewAry;
273276 mnPoints = nNewSize;
274277 }
278+
279+ return true ;
275280}
276281
277282void ImplPolygon::ImplCreateFlagArray ()
@@ -1472,8 +1477,8 @@ void Polygon::Insert( sal_uInt16 nPos, const Point& rPt )
14721477 if ( nPos >= mpImplPolygon->mnPoints )
14731478 nPos = mpImplPolygon->mnPoints ;
14741479
1475- mpImplPolygon->ImplSplit ( nPos, 1 );
1476- mpImplPolygon->mpPointAry [ nPos ] = rPt;
1480+ if ( mpImplPolygon->ImplSplit (nPos, 1 ))
1481+ mpImplPolygon->mpPointAry [ nPos ] = rPt;
14771482}
14781483
14791484void Polygon::Insert ( sal_uInt16 nPos, const tools::Polygon& rPoly )
0 commit comments