Kaydet (Commit) c23e12eb authored tarafından Caolán McNamara's avatar Caolán McNamara Kaydeden (comit) David Tardon

convert pStatus to vector and use at to check offsets

Change-Id: I5186f6a65bb9d5ed8a0d1ab1d71f7e2c13865411
(cherry picked from commit ea700888)
Reviewed-on: https://gerrit.libreoffice.org/17693Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarDavid Tardon <dtardon@redhat.com>
üst 4c537dd8
......@@ -3991,7 +3991,7 @@ void WW8ReadSTTBF(bool bVer8, SvStream& rStrm, sal_uInt32 nStart, sal_Int32 nLen
}
WW8PLCFx_Book::WW8PLCFx_Book(SvStream* pTableSt, const WW8Fib& rFib)
: WW8PLCFx(rFib.GetFIBVersion(), false), pStatus(0), nIsEnd(0), nBookmarkId(1)
: WW8PLCFx(rFib.GetFIBVersion(), false), nIsEnd(0), nBookmarkId(1)
{
if( !rFib.fcPlcfbkf || !rFib.lcbPlcfbkf || !rFib.fcPlcfbkl ||
!rFib.lcbPlcfbkl || !rFib.fcSttbfbkmk || !rFib.lcbSttbfbkmk )
......@@ -4016,14 +4016,12 @@ WW8PLCFx_Book::WW8PLCFx_Book(SvStream* pTableSt, const WW8Fib& rFib)
nIMax = pBook[0]->GetIMax();
if( pBook[1]->GetIMax() < nIMax )
nIMax = pBook[1]->GetIMax();
pStatus = new eBookStatus[ nIMax ];
memset( pStatus, 0, nIMax * sizeof( eBookStatus ) );
aStatus.resize(nIMax);
}
}
WW8PLCFx_Book::~WW8PLCFx_Book()
{
delete[] pStatus;
delete pBook[1];
delete pBook[0];
}
......@@ -4141,18 +4139,20 @@ long WW8PLCFx_Book::GetLen() const
return nNum;
}
void WW8PLCFx_Book::SetStatus(sal_uInt16 nIndex, eBookStatus eStat )
void WW8PLCFx_Book::SetStatus(sal_uInt16 nIndex, eBookStatus eStat)
{
OSL_ENSURE(nIndex < nIMax, "set status of non existing bookmark!");
pStatus[nIndex] = (eBookStatus)( pStatus[nIndex] | eStat );
SAL_WARN_IF(nIndex >= nIMax, "sw.ww8",
"bookmark index " << nIndex << " invalid");
eBookStatus eStatus = aStatus.at(nIndex);
aStatus[nIndex] = static_cast<eBookStatus>(eStatus | eStat);
}
eBookStatus WW8PLCFx_Book::GetStatus() const
{
if( !pStatus )
if (aStatus.empty())
return BOOK_NORMAL;
long nEndIdx = GetHandle();
return ( nEndIdx < nIMax ) ? pStatus[nEndIdx] : BOOK_NORMAL;
return ( nEndIdx < nIMax ) ? aStatus[nEndIdx] : BOOK_NORMAL;
}
long WW8PLCFx_Book::GetHandle() const
......
......@@ -724,8 +724,8 @@ class WW8PLCFx_Book : public WW8PLCFx
{
private:
WW8PLCFspecial* pBook[2]; // Start and End Position
::std::vector<OUString> aBookNames; // Name
eBookStatus* pStatus;
std::vector<OUString> aBookNames; // Name
std::vector<eBookStatus> aStatus;
long nIMax; // Number of Booknotes
sal_uInt16 nIsEnd;
sal_Int32 nBookmarkId; // counter incremented by GetUniqueBookmarkName.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment