[Libreoffice-commits] core.git: lotuswordpro/source

Caolán McNamara caolanm at redhat.com
Mon Feb 27 14:26:05 UTC 2017


 lotuswordpro/source/filter/lwpidxmgr.cxx |   60 ++++++++++---------------------
 lotuswordpro/source/filter/lwpidxmgr.hxx |    8 ++--
 2 files changed, 24 insertions(+), 44 deletions(-)

New commits:
commit b06e2b7ef157affa71fe60f4b064f67b11024213
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Feb 27 14:24:37 2017 +0000

    ofz: fix leak
    
    Change-Id: I00e73eabb34ae98088a8e88d0c8677bf236a5e09

diff --git a/lotuswordpro/source/filter/lwpidxmgr.cxx b/lotuswordpro/source/filter/lwpidxmgr.cxx
index ff7fc21..640c42f 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 c07bb98..b87a336 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


More information about the Libreoffice-commits mailing list