From f074ad34d5fbc52f4f8df4eec31ba95ee92f879b Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 23 Sep 2020 12:44:14 +0100 Subject: ofz#25881 use std::vector with bounds checking accessor Change-Id: Ic557e85bce5f3ebe7224b0aa2192a74969f4fce2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103194 Tested-by: Jenkins Reviewed-by: Xisco Fauli --- lotuswordpro/source/filter/lwptablelayout.cxx | 14 +++++++------- lotuswordpro/source/filter/lwptablelayout.hxx | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lotuswordpro/source/filter/lwptablelayout.cxx b/lotuswordpro/source/filter/lwptablelayout.cxx index 448599e5b2c5..b4805ae6d9af 100644 --- a/lotuswordpro/source/filter/lwptablelayout.cxx +++ b/lotuswordpro/source/filter/lwptablelayout.cxx @@ -855,7 +855,7 @@ sal_uInt16 LwpTableLayout::ConvertHeadingRow( ConvertTable(pTmpTable.get(),nStartHeadRow,nEndHeadRow,0,nCol); sal_uInt16 nRowNum = pTmpTable->GetRowCount(); - std::unique_ptr CellMark( new sal_uInt8[nRowNum] ); + std::vector CellMark(nRowNum); if (nRowNum == 1) { @@ -867,11 +867,11 @@ sal_uInt16 LwpTableLayout::ConvertHeadingRow( else { sal_uInt8 nFirstColSpann = 1; - const bool bFindFlag = FindSplitColMark(pTmpTable.get(),CellMark.get(),nFirstColSpann); + const bool bFindFlag = FindSplitColMark(pTmpTable.get(), CellMark, nFirstColSpann); if (bFindFlag)//split to 2 cells { - SplitRowToCells(pTmpTable.get(),pXFTable,nFirstColSpann,CellMark.get()); + SplitRowToCells(pTmpTable.get(), pXFTable, nFirstColSpann, CellMark.data()); nContentRow = nEndHeadRow; } else//can not split,the first row will be the heading row,the rest will be content row @@ -987,7 +987,7 @@ void LwpTableLayout::SplitRowToCells(XFTable* pTmpTable, rtl::Reference * @param pXFTable - pointer of tmp XFtable * @param CellMark - pointer of cell mark array */ -bool LwpTableLayout::FindSplitColMark(XFTable* pXFTable, sal_uInt8* pCellMark, +bool LwpTableLayout::FindSplitColMark(XFTable* pXFTable, std::vector& rCellMark, sal_uInt8& nMaxColSpan) { sal_uInt16 nRowNum = pXFTable->GetRowCount(); @@ -1017,7 +1017,7 @@ bool LwpTableLayout::FindSplitColMark(XFTable* pXFTable, sal_uInt8* pCellMark, } if (nColSpan > nMaxColSpan) nMaxColSpan = nColSpan; - pCellMark[nRowLoop] = 0;//reset all cell mark to zero + rCellMark.at(nRowLoop) = 0;//reset all cell mark to zero } //find if other row has the same column @@ -1040,11 +1040,11 @@ bool LwpTableLayout::FindSplitColMark(XFTable* pXFTable, sal_uInt8* pCellMark, if (nCellMark == 0) break; else - pCellMark[nRowLoop] = nCellMark; + rCellMark.at(nRowLoop) = nCellMark; } for(nRowLoop=1;nRowLoop<=nRowNum;nRowLoop++)//check if all ==0,break { - if (pCellMark[nRowLoop] == 0) + if (rCellMark.at(nRowLoop) == 0) break; } if (nRowLoop == nRowNum+1) diff --git a/lotuswordpro/source/filter/lwptablelayout.hxx b/lotuswordpro/source/filter/lwptablelayout.hxx index 5e232dba73b4..97e2ac10acbe 100644 --- a/lotuswordpro/source/filter/lwptablelayout.hxx +++ b/lotuswordpro/source/filter/lwptablelayout.hxx @@ -141,7 +141,7 @@ private: sal_uInt8 nEndCol, sal_uInt16 nRowID); void ConvertColumn(rtl::Reference const & pXFTable, sal_uInt8 nStartCol, sal_uInt8 nEndCol); sal_uInt16 ConvertHeadingRow(rtl::Reference const & pXFTable,sal_uInt16 nStartHeadRow,sal_uInt16 nEndHeadRow); - static bool FindSplitColMark(XFTable* pXFTable,sal_uInt8* pCellMark,sal_uInt8& nMaxColSpan); + static bool FindSplitColMark(XFTable* pXFTable, std::vector& rCellMark, sal_uInt8& nMaxColSpan); void SplitRowToCells(XFTable* pTmpTable, rtl::Reference const & pXFTable, sal_uInt8 nFirstColSpann, const sal_uInt8* pCellMark); -- cgit