summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-08-13 10:58:06 +0100
committerAndras Timar <andras.timar@collabora.com>2015-09-15 17:17:06 +0200
commit8b6a6a2417c1405263fea0089c3fae128f30bc5b (patch)
tree8af9414fd04559b3ed49c46a29dc8a71ec3542cb
parentc32709bac2b729572a96242cb8aa9026598dc269 (diff)
convert pStatus to vector and use at to check offsets
(cherry picked from commit ea70088895ed45dc60abf18319acc1b4fa3018dd) Change-Id: I5186f6a65bb9d5ed8a0d1ab1d71f7e2c13865411 Reviewed-on: https://gerrit.libreoffice.org/17695 Reviewed-by: David Tardon <dtardon@redhat.com> Tested-by: David Tardon <dtardon@redhat.com> (cherry picked from commit 92c3a5b80ac575e1c538894b7c1a4170093785b5)
-rw-r--r--sw/source/filter/ww8/ww8scan.cxx18
-rw-r--r--sw/source/filter/ww8/ww8scan.hxx4
2 files changed, 11 insertions, 11 deletions
diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx
index 4562ffc0058e..0cdb72b92a88 100644
--- a/sw/source/filter/ww8/ww8scan.cxx
+++ b/sw/source/filter/ww8/ww8scan.cxx
@@ -3942,7 +3942,7 @@ void WW8ReadSTTBF(bool bVer8, SvStream& rStrm, sal_uInt32 nStart, sal_Int32 nLen
}
WW8PLCFx_Book::WW8PLCFx_Book(SvStream* pTblSt, 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 )
@@ -3967,14 +3967,12 @@ WW8PLCFx_Book::WW8PLCFx_Book(SvStream* pTblSt, 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];
}
@@ -4092,18 +4090,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
diff --git a/sw/source/filter/ww8/ww8scan.hxx b/sw/source/filter/ww8/ww8scan.hxx
index fd8a9f5c74ba..d606dc5f05c2 100644
--- a/sw/source/filter/ww8/ww8scan.hxx
+++ b/sw/source/filter/ww8/ww8scan.hxx
@@ -734,8 +734,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.