summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-03-31 11:23:04 +0100
committerAndras Timar <andras.timar@collabora.com>2017-04-04 12:19:40 +0200
commite617bf01e3d7593d41f60c4a56a69caddf93c64e (patch)
treecebf82a554fddb2c27ec294a97d2ad74d8b0a949 /svx
parent5bea1d8b898004b87943203c0b492361df52fd3e (diff)
ofz#974 check SetBorder bounds like the other maHorizontalBorders users
Change-Id: Iac113433ac2317ddfebc68ed793c481384d56551 Reviewed-on: https://gerrit.libreoffice.org/35965 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Stahl <mstahl@redhat.com> (cherry picked from commit 17c2f64e03476697d19f224fc9b08aa6cbc6cd03)
Diffstat (limited to 'svx')
-rw-r--r--svx/source/table/tablelayouter.cxx31
1 files changed, 17 insertions, 14 deletions
diff --git a/svx/source/table/tablelayouter.cxx b/svx/source/table/tablelayouter.cxx
index e90c19999fcf..24f0f17a04f9 100644
--- a/svx/source/table/tablelayouter.cxx
+++ b/svx/source/table/tablelayouter.cxx
@@ -916,36 +916,40 @@ bool TableLayouter::HasPriority( const SvxBorderLine* pThis, const SvxBorderLine
}
}
-
void TableLayouter::SetBorder( sal_Int32 nCol, sal_Int32 nRow, bool bHorizontal, const SvxBorderLine* pLine )
{
- if( pLine == nullptr )
+ if (!pLine)
pLine = &gEmptyBorder;
- SvxBorderLine *pOld = bHorizontal ? maHorizontalBorders[nCol][nRow] : maVerticalBorders[nCol][nRow];
+ BorderLineMap& rMap = bHorizontal ? maHorizontalBorders : maVerticalBorders;
- if( HasPriority( pLine, pOld ) )
+ if( (nCol >= 0) && (nCol < sal::static_int_cast<sal_Int32>(rMap.size())) &&
+ (nRow >= 0) && (nRow < sal::static_int_cast<sal_Int32>(rMap[nCol].size())) )
{
- if( (pOld != nullptr) && (pOld != &gEmptyBorder) )
- delete pOld;
+ SvxBorderLine *pOld = rMap[nCol][nRow];
- SvxBorderLine* pNew = ( pLine != &gEmptyBorder ) ? new SvxBorderLine(*pLine) : &gEmptyBorder;
+ if (HasPriority(pLine, pOld))
+ {
+ if (pOld && pOld != &gEmptyBorder)
+ delete pOld;
- if( bHorizontal )
- maHorizontalBorders[nCol][nRow] = pNew;
- else
- maVerticalBorders[nCol][nRow] = pNew;
+ SvxBorderLine* pNew = (pLine != &gEmptyBorder) ? new SvxBorderLine(*pLine) : &gEmptyBorder;
+
+ rMap[nCol][nRow] = pNew;
+ }
+ }
+ else
+ {
+ OSL_FAIL( "sdr::table::TableLayouter::SetBorder(), invalid border!" );
}
}
-
void TableLayouter::ClearBorderLayout()
{
ClearBorderLayout(maHorizontalBorders);
ClearBorderLayout(maVerticalBorders);
}
-
void TableLayouter::ClearBorderLayout(BorderLineMap& rMap)
{
const sal_Int32 nColCount = rMap.size();
@@ -967,7 +971,6 @@ void TableLayouter::ClearBorderLayout(BorderLineMap& rMap)
}
}
-
void TableLayouter::ResizeBorderLayout()
{
ClearBorderLayout();