svx/source/table/tablelayouter.cxx | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-)
New commits: commit 8deb8ccdcfc06099a8a293a1ad16d1966f131007 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Mar 31 11:23:04 2017 +0100 ofz#974 check SetBorder bounds like the other maHorizontalBorders users Change-Id: Iac113433ac2317ddfebc68ed793c481384d56551 Reviewed-on: https://gerrit.libreoffice.org/35966 Reviewed-by: Michael Stahl <mst...@redhat.com> Tested-by: Michael Stahl <mst...@redhat.com> diff --git a/svx/source/table/tablelayouter.cxx b/svx/source/table/tablelayouter.cxx index ae87f5044ad3..0328adaea4d1 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();
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits