summaryrefslogtreecommitdiff
path: root/lotuswordpro
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-02-27 14:24:37 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-02-27 14:25:39 +0000
commitb06e2b7ef157affa71fe60f4b064f67b11024213 (patch)
tree51e2a33ed12fcdb54fb0a1fe1eef7515ecd9ee32 /lotuswordpro
parent4d73a7227f4f341aece7ab3376823f70a3e87d71 (diff)
ofz: fix leak
Change-Id: I00e73eabb34ae98088a8e88d0c8677bf236a5e09
Diffstat (limited to 'lotuswordpro')
-rw-r--r--lotuswordpro/source/filter/lwpidxmgr.cxx60
-rw-r--r--lotuswordpro/source/filter/lwpidxmgr.hxx8
2 files changed, 24 insertions, 44 deletions
diff --git a/lotuswordpro/source/filter/lwpidxmgr.cxx b/lotuswordpro/source/filter/lwpidxmgr.cxx
index ff7fc215b194..640c42f04aa9 100644
--- a/lotuswordpro/source/filter/lwpidxmgr.cxx
+++ b/lotuswordpro/source/filter/lwpidxmgr.cxx
@@ -73,30 +73,13 @@
const sal_uInt8 LwpIndexManager::MAXOBJECTIDS = 255;
LwpIndexManager::LwpIndexManager()
- :m_nKeyCount(0), m_nLeafCount(0)
+ : m_nKeyCount(0)
+ , m_nLeafCount(0)
{
-
m_TempVec.resize( LwpIndexManager::MAXOBJECTIDS );
}
-LwpIndexManager::~LwpIndexManager()
-{
- //Clear m_ObjectKeys
- std::vector<LwpKey*>::iterator it;
-
- for( it = m_ObjectKeys.begin(); it != m_ObjectKeys.end(); ++it )
- {
- LwpKey* pKey = *it;
- if( pKey )
- {
- delete pKey;
- pKey = nullptr;
- }
- }
- m_ObjectKeys.clear();
-}
-
/**
* @descr Read all index records, VO_ROOTLEAFOBJINDEX, VO_ROOTOBJINDEX, VO_LEAFOBJINDEX
*/
@@ -159,21 +142,20 @@ void LwpIndexManager::ReadRootData(LwpObjectStream* pObjStrm)
if (KeyCount)
{
//read object keys
- LwpKey* akey = new LwpKey;
- akey->id.Read(pObjStrm);
+ LwpKey akey;
+ akey.id.Read(pObjStrm);
m_RootObjs.push_back(akey);
sal_uInt16 k = 0;
for (k = 1; k < KeyCount; k++)
{
- akey = new LwpKey;
- akey->id.ReadCompressed(pObjStrm, m_RootObjs[k-1]->id);
+ akey.id.ReadCompressed(pObjStrm, m_RootObjs[k-1].id);
m_RootObjs.push_back(akey);
}
for (k = 0; k < KeyCount; k++)
- m_RootObjs[k]->offset = pObjStrm->QuickReaduInt32();
+ m_RootObjs[k].offset = pObjStrm->QuickReaduInt32();
//read leaf index offset
for (k = 0; k < m_nLeafCount; k++)
@@ -193,25 +175,24 @@ void LwpIndexManager::ReadObjIndexData(LwpObjectStream* pObjStrm)
sal_uInt16 KeyCount = pObjStrm->QuickReaduInt16();
sal_uInt16 LeafCount = KeyCount + 1;
- std::vector<LwpKey*> vObjIndexs;
+ std::vector<LwpKey> vObjIndexs;
if(KeyCount)
{
- LwpKey* akey = new LwpKey;
- akey->id.Read(pObjStrm);
+ LwpKey akey;
+ akey.id.Read(pObjStrm);
vObjIndexs.push_back(akey);
sal_uInt16 k = 0;
for (k = 1; k < KeyCount; k++)
{
- akey = new LwpKey;
- akey->id.ReadCompressed(pObjStrm, vObjIndexs[k-1]->id);
+ akey.id.ReadCompressed(pObjStrm, vObjIndexs[k-1].id);
vObjIndexs.push_back(akey);
}
for (k = 0; k < KeyCount; k++)
- vObjIndexs[k]->offset = pObjStrm->QuickReaduInt32();
+ vObjIndexs[k].offset = pObjStrm->QuickReaduInt32();
for (k = 0; k < LeafCount; k++)
m_TempVec.at(k) = pObjStrm->QuickReaduInt32();
@@ -281,20 +262,19 @@ void LwpIndexManager::ReadLeafData( LwpObjectStream *pObjStrm )
if(KeyCount)
{
- LwpKey* akey = new LwpKey;
+ LwpKey akey;
//read object keys: id & offset
- akey->id.Read(pObjStrm);
+ akey.id.Read(pObjStrm);
m_ObjectKeys.push_back(akey);
for (sal_uInt16 k = 1; k < KeyCount; k++)
{
- akey = new LwpKey;
- akey->id.ReadCompressed(pObjStrm, m_ObjectKeys.at(m_nKeyCount+k-1)->id);
+ akey.id.ReadCompressed(pObjStrm, m_ObjectKeys.at(m_nKeyCount+k-1).id);
m_ObjectKeys.push_back(akey);
}
for (sal_uInt16 j = 0; j < KeyCount; j++)
- m_ObjectKeys.at(m_nKeyCount+j)->offset = pObjStrm->QuickReaduInt32();
+ m_ObjectKeys.at(m_nKeyCount+j).offset = pObjStrm->QuickReaduInt32();
}
m_nKeyCount += KeyCount;
}
@@ -326,17 +306,17 @@ sal_uInt32 LwpIndexManager::GetObjOffset( LwpObjectID objid )
{
M = (L + U) >> 1;
- if (objid.GetLow() > m_ObjectKeys[M]->id.GetLow())
+ if (objid.GetLow() > m_ObjectKeys[M].id.GetLow())
L = M + 1;
- else if (objid.GetLow() < m_ObjectKeys[M]->id.GetLow())
+ else if (objid.GetLow() < m_ObjectKeys[M].id.GetLow())
U = M;
- else if (objid.GetHigh() > m_ObjectKeys[M]->id.GetHigh())
+ else if (objid.GetHigh() > m_ObjectKeys[M].id.GetHigh())
L = M + 1;
- else if (objid.GetHigh() < m_ObjectKeys[M]->id.GetHigh())
+ else if (objid.GetHigh() < m_ObjectKeys[M].id.GetHigh())
U = M;
else
{
- return(m_ObjectKeys[M]->offset);
+ return(m_ObjectKeys[M].offset);
}
}
return BAD_OFFSET;
diff --git a/lotuswordpro/source/filter/lwpidxmgr.hxx b/lotuswordpro/source/filter/lwpidxmgr.hxx
index c07bb984bcbf..b87a3367cb74 100644
--- a/lotuswordpro/source/filter/lwpidxmgr.hxx
+++ b/lotuswordpro/source/filter/lwpidxmgr.hxx
@@ -73,6 +73,7 @@ struct LwpKey
LwpObjectID id;
sal_uInt32 offset = 0;
};
+
/**
* @brief LwpIndexManager, to read all index records and maintain the index information
*/
@@ -80,12 +81,11 @@ class LwpIndexManager
{
public:
LwpIndexManager();
- ~LwpIndexManager();
protected:
static const sal_uInt8 MAXOBJECTIDS;
- std::vector<LwpKey*> m_ObjectKeys; //the <id, offset> ordered vector
- std::vector<LwpKey*> m_RootObjs; //For those object ids in RootObjIndex
- std::vector<sal_uInt32> m_TimeTable; //Time table for object low id compression
+ std::vector<LwpKey> m_ObjectKeys; //the <id, offset> ordered vector
+ std::vector<LwpKey> m_RootObjs; //For those object ids in RootObjIndex
+ std::vector<sal_uInt32> m_TimeTable; //Time table for object low id compression
//sal_uInt16 m_nKeyCount;
sal_uInt32 m_nKeyCount; //the count of all object