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

Caolán McNamara caolanm at redhat.com
Sun Jan 21 20:16:01 UTC 2018


 lotuswordpro/source/filter/lwpgrfobj.cxx |   31 ++++++++++---------------------
 lotuswordpro/source/filter/lwpgrfobj.hxx |    2 +-
 lotuswordpro/source/filter/lwplayout.cxx |   10 ++--------
 3 files changed, 13 insertions(+), 30 deletions(-)

New commits:
commit 398b0195b7833ca8fab29a600954c84527b25cf9
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sat Jan 20 21:03:31 2018 +0000

    just return a vector
    
    Change-Id: Id6a75dee04c836ca28299dc6b3ab0b93361684c4
    Reviewed-on: https://gerrit.libreoffice.org/48256
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/lotuswordpro/source/filter/lwpgrfobj.cxx b/lotuswordpro/source/filter/lwpgrfobj.cxx
index 5731b34acdff..30431b7a1bb3 100644
--- a/lotuswordpro/source/filter/lwpgrfobj.cxx
+++ b/lotuswordpro/source/filter/lwpgrfobj.cxx
@@ -225,17 +225,8 @@ void LwpGraphicObject::XFConvert (XFContentContainer* pCont)
         }
         else
         {
-            sal_uInt8* pGrafData = nullptr;
-            sal_uInt32 nDataLen = GetRawGrafData(pGrafData);
-
-            if (pGrafData)
-            {
-                pImage->SetImageData(pGrafData, nDataLen);
-
-                // delete used image data
-                delete [] pGrafData;
-                pGrafData = nullptr;
-            }
+            std::vector<sal_uInt8> aGrafData = GetRawGrafData();
+            pImage->SetImageData(aGrafData.data(), aGrafData.size());
         }
 
         pCont->Add(pImage);
@@ -337,11 +328,12 @@ void LwpGraphicObject::GetBentoNamebyID(LwpObjectID const & rMyID, std::string&
 
 /**
  * @descr   get the image data read from bento stream according to the VO_GRAPHIC ID.
- * @param   pGrafData   the array to store the image data. the pointer need to be deleted outside.
- * @return  the length of the image data.
+ * @return  the image data.
  */
-sal_uInt32 LwpGraphicObject::GetRawGrafData(sal_uInt8*& pGrafData)
+std::vector<sal_uInt8> LwpGraphicObject::GetRawGrafData()
 {
+    std::vector<sal_uInt8> aGrafData;
+
     // create graphic object
     // if small file, use the compressed stream for BENTO
     LwpSvStream* pStream = m_pStrm->GetCompressedStream() ?  m_pStrm->GetCompressedStream(): m_pStrm;
@@ -352,7 +344,7 @@ sal_uInt32 LwpGraphicObject::GetRawGrafData(sal_uInt8*& pGrafData)
         sal_uLong ulRet = OpenStormBento::BenOpenContainer(pStream, &pTmp);
         pBentoContainer.reset(pTmp);
         if (ulRet != OpenStormBento::BenErr_OK)
-            return 0;
+            return aGrafData;
     }
 
     // get graphic object's bento object name
@@ -365,16 +357,13 @@ sal_uInt32 LwpGraphicObject::GetRawGrafData(sal_uInt8*& pGrafData)
     if (pMemGrafStream)
     {
         // read image data
-        sal_uInt32 nDataLen = pMemGrafStream->GetEndOfData();
-        pGrafData = new sal_uInt8 [nDataLen];
-        pMemGrafStream->ReadBytes(pGrafData, nDataLen);
+        aGrafData.resize(pMemGrafStream->GetEndOfData());
+        pMemGrafStream->ReadBytes(aGrafData.data(), aGrafData.size());
 
         delete pMemGrafStream;
-
-        return nDataLen;
     }
 
-    return 0;
+    return aGrafData;
 }
 
 /**
diff --git a/lotuswordpro/source/filter/lwpgrfobj.hxx b/lotuswordpro/source/filter/lwpgrfobj.hxx
index 03d017a74a4d..726d8ec049cc 100644
--- a/lotuswordpro/source/filter/lwpgrfobj.hxx
+++ b/lotuswordpro/source/filter/lwpgrfobj.hxx
@@ -118,7 +118,7 @@ public:
     void CreateDrawObjects();
     void CreateGrafObject();
     static void GetBentoNamebyID(LwpObjectID const & rMyID, std::string& rName);
-    sal_uInt32 GetRawGrafData(sal_uInt8*& pGrafData);
+    std::vector<sal_uInt8> GetRawGrafData();
     sal_uInt32 GetGrafData(sal_uInt8*& pGrafData);
     void GetGrafOrgSize(long& rWidth, long& rHeight) { rWidth = m_Cache.Width; rHeight = m_Cache.Height; }
     void GetGrafOrgSize(double& rWidth, double& rHeight) override;
diff --git a/lotuswordpro/source/filter/lwplayout.cxx b/lotuswordpro/source/filter/lwplayout.cxx
index 00ab92c6a4b3..73f0c3114640 100644
--- a/lotuswordpro/source/filter/lwplayout.cxx
+++ b/lotuswordpro/source/filter/lwplayout.cxx
@@ -1364,14 +1364,8 @@ XFBGImage* LwpMiddleLayout::GetXFBGImage()
             }
             else
             {
-                sal_uInt8* pGrafData = nullptr;
-                sal_uInt32 nDataLen = pGrfObj->GetRawGrafData(pGrafData);
-                pXFBGImage->SetImageData(pGrafData, nDataLen);
-                if(pGrafData)
-                {
-                    delete[] pGrafData;
-                    pGrafData = nullptr;
-                }
+                std::vector<sal_uInt8> aGrafData = pGrfObj->GetRawGrafData();
+                pXFBGImage->SetImageData(aGrafData.data(), aGrafData.size());
             }
 
             //automatic, top left


More information about the Libreoffice-commits mailing list