summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-09-10 14:41:42 +0100
committerMichael Stahl <mstahl@redhat.com>2014-09-10 15:37:14 +0000
commitadbdac2dd6799789a45cd3b6ca48919889a8b64d (patch)
tree539416f99cea5e7db61891f456317254b3897bf8
parent4b8a0159ca80dad05ddcaad5897b786484fc8afb (diff)
clip PolyPolygon::Insert on .svm load
valgrind + bff Change-Id: Ib3ed8a6e518c0686f8cbeaf021b9ca3a07005032 (cherry picked from commit fd64d444b730f6cb7216dac8f6e3f94b97d7ab60) Reviewed-on: https://gerrit.libreoffice.org/11381 Reviewed-by: Michael Stahl <mstahl@redhat.com> Tested-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r--tools/source/generic/poly2.cxx8
-rw-r--r--vcl/source/gdi/metaact.cxx6
2 files changed, 10 insertions, 4 deletions
diff --git a/tools/source/generic/poly2.cxx b/tools/source/generic/poly2.cxx
index 7ef7df199f4f..ffd60e25d8d6 100644
--- a/tools/source/generic/poly2.cxx
+++ b/tools/source/generic/poly2.cxx
@@ -154,7 +154,7 @@ void PolyPolygon::Insert( const Polygon& rPoly, sal_uInt16 nPos )
void PolyPolygon::Remove( sal_uInt16 nPos )
{
- DBG_ASSERT( nPos < Count(), "PolyPolygon::Remove(): nPos >= nSize" );
+ assert(nPos < Count() && "PolyPolygon::Remove(): nPos >= nSize");
if ( mpImplPolyPolygon->mnRefCount > 1 )
{
@@ -171,7 +171,7 @@ void PolyPolygon::Remove( sal_uInt16 nPos )
void PolyPolygon::Replace( const Polygon& rPoly, sal_uInt16 nPos )
{
- DBG_ASSERT( nPos < Count(), "PolyPolygon::Replace(): nPos >= nSize" );
+ assert(nPos < Count() && "PolyPolygon::Replace(): nPos >= nSize");
if ( mpImplPolyPolygon->mnRefCount > 1 )
{
@@ -185,7 +185,7 @@ void PolyPolygon::Replace( const Polygon& rPoly, sal_uInt16 nPos )
const Polygon& PolyPolygon::GetObject( sal_uInt16 nPos ) const
{
- DBG_ASSERT( nPos < Count(), "PolyPolygon::GetObject(): nPos >= nSize" );
+ assert(nPos < Count() && "PolyPolygon::GetObject(): nPos >= nSize");
return *(mpImplPolyPolygon->mpPolyAry[nPos]);
}
@@ -508,7 +508,7 @@ Rectangle PolyPolygon::GetBoundRect() const
Polygon& PolyPolygon::operator[]( sal_uInt16 nPos )
{
- DBG_ASSERT( nPos < Count(), "PolyPolygon::[](): nPos >= nSize" );
+ assert(nPos < Count() && "PolyPolygon::[](): nPos >= nSize");
if ( mpImplPolyPolygon->mnRefCount > 1 )
{
diff --git a/vcl/source/gdi/metaact.cxx b/vcl/source/gdi/metaact.cxx
index fee3d80ac249..36ce0d5bdbb4 100644
--- a/vcl/source/gdi/metaact.cxx
+++ b/vcl/source/gdi/metaact.cxx
@@ -997,6 +997,12 @@ void MetaPolyPolygonAction::Read( SvStream& rIStm, ImplMetaReadData* )
rIStm.ReadUInt16( nIndex );
Polygon aPoly;
aPoly.Read( rIStm );
+ if (nIndex >= maPolyPoly.Count())
+ {
+ SAL_WARN("vcl.gdi", "svm contains polygon index " << nIndex
+ << " outside possible range " << maPolyPoly.Count());
+ continue;
+ }
maPolyPoly.Replace( aPoly, nIndex );
}
}