[Libreoffice-commits] core.git: 11 commits - basic/source chart2/source cui/source extensions/source filter/source svtools/source sw/source vcl/inc vcl/source

Markus Mohrhard markus.mohrhard at googlemail.com
Fri Mar 1 21:52:43 PST 2013


 basic/source/runtime/iosys.cxx                       |    1 +
 chart2/source/controller/dialogs/res_BarGeometry.cxx |    2 +-
 cui/source/customize/cfg.cxx                         |    1 +
 cui/source/options/treeopt.cxx                       |    5 +----
 extensions/source/nsplugin/source/npshell.cxx        |    2 ++
 extensions/source/plugin/unx/npnapi.cxx              |    3 +++
 extensions/source/plugin/unx/plugcon.cxx             |   13 ++++++++++---
 filter/source/flash/swfexporter.cxx                  |    3 +++
 svtools/source/graphic/grfmgr2.cxx                   |   10 ++++++----
 svtools/source/graphic/provider.cxx                  |    5 +++--
 sw/source/filter/ww1/w1class.cxx                     |    4 ++--
 vcl/inc/vcl/gdimtf.hxx                               |    3 +++
 vcl/source/gdi/bitmap4.cxx                           |    3 +++
 vcl/source/gdi/cvtsvm.cxx                            |   15 +++++++++------
 vcl/source/gdi/gdimtf.cxx                            |    5 +++++
 15 files changed, 53 insertions(+), 22 deletions(-)

New commits:
commit ac9c6e4da094f5b7ae3e8c45bf7f1c61376e7ff2
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat Mar 2 04:09:35 2013 +0100

    coverity#982991: fix memory leak
    
    Change-Id: I083d1c22daefacefd59a918073ed605aa318bdce

diff --git a/filter/source/flash/swfexporter.cxx b/filter/source/flash/swfexporter.cxx
index 29da268..81c7f76 100644
--- a/filter/source/flash/swfexporter.cxx
+++ b/filter/source/flash/swfexporter.cxx
@@ -614,7 +614,10 @@ void FlashExporter::exportShape( Reference< XShape >& xShape, bool bMaster )
             }
 
             if (!nID)
+            {
+                delete pShapeInfo;
                 return;
+            }
 
             pShapeInfo->mnID = nID;
 
commit fca5e0992f153e1e821d4dd9bd35c11c39cdb6ec
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat Mar 2 04:03:48 2013 +0100

    coverity#982975 and more: fix memory leaks
    
    Change-Id: I4c147ea03eb4d5d7c926ec1cccbd344ff28c77d7

diff --git a/extensions/source/plugin/unx/plugcon.cxx b/extensions/source/plugin/unx/plugcon.cxx
index cc0d3b5..7683825 100644
--- a/extensions/source/plugin/unx/plugcon.cxx
+++ b/extensions/source/plugin/unx/plugcon.cxx
@@ -114,7 +114,9 @@ MediatorMessage* PluginConnector::Transact( const char* pFunction,
     va_start( ap, nFunctionLen );
     sal_uLong nSize = FillBuffer( pBuffer, pFunction, nFunctionLen, ap );
     va_end( ap );
-    return TransactMessage( nSize, pBuffer );
+    MediatorMessage* pRet = TransactMessage( nSize, pBuffer );
+    delete[] pBuffer;
+    return pRet;
 }
 
 MediatorMessage* PluginConnector::Transact( sal_uInt32 nFunction, ... )
@@ -125,7 +127,9 @@ MediatorMessage* PluginConnector::Transact( sal_uInt32 nFunction, ... )
     va_start( ap, nFunction );
     sal_uLong nSize = FillBuffer( pBuffer, (char*)&nFunction, sizeof( nFunction ), ap );
     va_end( ap );
-    return TransactMessage( nSize, pBuffer );
+    MediatorMessage* pRet = TransactMessage( nSize, pBuffer );
+    delete[] pBuffer;
+    return pRet;
 }
 
 sal_uLong PluginConnector::Send( sal_uInt32 nFunction, ... )
@@ -136,7 +140,9 @@ sal_uLong PluginConnector::Send( sal_uInt32 nFunction, ... )
     va_start( ap, nFunction );
     sal_uLong nSize = FillBuffer( pBuffer, (char*)&nFunction, sizeof( nFunction ), ap );
     va_end( ap );
-    return SendMessage( nSize, pBuffer );
+    sal_uLong nRet = SendMessage( nSize, pBuffer );
+    delete[] pBuffer;
+    return nRet;
 }
 
 void PluginConnector::Respond( sal_uLong nID,
@@ -150,6 +156,7 @@ void PluginConnector::Respond( sal_uLong nID,
     sal_uLong nSize = FillBuffer( pBuffer, pFunction, nFunctionLen, ap );
     va_end( ap );
     SendMessage( nSize, pBuffer, nID | ( 1 << 24 ) );
+    delete[] pBuffer;
 }
 
 MediatorMessage* PluginConnector::WaitForAnswer( sal_uLong nMessageID )
commit 5ff1afbf1ef1dbea81c156572e7cd125bde70778
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat Mar 2 03:57:42 2013 +0100

    coverity#982974: fix memory leak
    
    Change-Id: I8501d26e0f0447b219ecbbdc9262f13158f5aa0a

diff --git a/extensions/source/plugin/unx/npnapi.cxx b/extensions/source/plugin/unx/npnapi.cxx
index bfc6fa1..90b82bc 100644
--- a/extensions/source/plugin/unx/npnapi.cxx
+++ b/extensions/source/plugin/unx/npnapi.cxx
@@ -288,7 +288,10 @@ static NPError l_NPN_RequestRead( NPStream* stream, NPByteRange* rangeList )
                   NULL );
 
     if( ! pMes )
+    {
+        delete[] pArray;
         return NPERR_GENERIC_ERROR;
+    }
 
     NPError aRet = pConnector->GetNPError( pMes );
     delete [] pArray;
commit f05ef81b31bd0ca16278a8396f42fca75ca038c5
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat Mar 2 03:50:55 2013 +0100

    coverity#982972 & coverity#982971: fix memory leak
    
    Change-Id: I3fa44aa5651584c5a90d9e18c75d0c825fcf05fc

diff --git a/extensions/source/nsplugin/source/npshell.cxx b/extensions/source/nsplugin/source/npshell.cxx
index f476d1c..b1d3e19 100644
--- a/extensions/source/nsplugin/source/npshell.cxx
+++ b/extensions/source/nsplugin/source/npshell.cxx
@@ -784,6 +784,8 @@ NPP_StreamAsFile(NPP instance, NPStream *stream, const char* fname)
             {
                 debug_fprintf(NSP_LOG_APPEND, "NPP_StreamAsFile:short write to %s. error: %s \n",
                     localPathNew, strerror(errno));
+                close(fdSrc);
+                close(fdDst);
                 return;
             }
         }
commit 3c1c6afa2e6671af8508e39b83a58f026655d7eb
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat Mar 2 03:47:41 2013 +0100

    coverity#982967: fix memory leak
    
    Change-Id: Ie96353daa1947297eff417d32ba4c67964489a16

diff --git a/cui/source/customize/cfg.cxx b/cui/source/customize/cfg.cxx
index abe67f6..05a28f8 100644
--- a/cui/source/customize/cfg.cxx
+++ b/cui/source/customize/cfg.cxx
@@ -2082,6 +2082,7 @@ SvTreeListEntry* SvxConfigPage::AddFunction(
                 // asynchronous error message, because of MsgBoxes
                 PostUserEvent(
                     LINK( this, SvxConfigPage, AsyncInfoMsg ) );
+                delete pNewEntryData;
                 return NULL;
             }
 
commit d021bb4dae80a194c196c8885bc5125b78476bd8
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat Mar 2 03:34:30 2013 +0100

    coverity: fix memory leak
    
    Change-Id: I17a09015d98a98349571a35492d516724ae2daa9

diff --git a/basic/source/runtime/iosys.cxx b/basic/source/runtime/iosys.cxx
index 1fccd92..4daa688 100644
--- a/basic/source/runtime/iosys.cxx
+++ b/basic/source/runtime/iosys.cxx
@@ -216,6 +216,7 @@ bool needSecurityRestrictions( void )
         oslSecurity aSecurity = osl_getCurrentSecurity();
         OUString aSystemUser;
         sal_Bool bRet = osl_getUserName( aSecurity, &aSystemUser.pData );
+        osl_freeSecurityHandle(aSecurity);
         if( !bRet )
         {
             // No valid security! -> Secure mode!
commit a935faad11d5306631ac746ea5febaf06822bc66
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat Mar 2 03:24:19 2013 +0100

    coverity#736572: possible memory leak and memory corruption + docu
    
    Change-Id: I2f1aad214481903866cd496542d961245fae47d1

diff --git a/svtools/source/graphic/grfmgr2.cxx b/svtools/source/graphic/grfmgr2.cxx
index fd8679e..329e34d 100644
--- a/svtools/source/graphic/grfmgr2.cxx
+++ b/svtools/source/graphic/grfmgr2.cxx
@@ -1311,15 +1311,17 @@ sal_Bool GraphicManager::ImplCreateOutput( OutputDevice* pOut,
             }
             if ( pModAct )
             {
-                rOutMtf.ReplaceAction( pModAct, nCurPos );
-                pAct->Delete();
+                MetaAction* pDeleteAction = rOutMtf.ReplaceAction( pModAct, nCurPos );
+                assert(pDeleteAction);
+                pDeleteAction->Delete();
             }
             else
             {
                 if( pAct->GetRefCount() > 1 )
                 {
-                    rOutMtf.ReplaceAction( pModAct = pAct->Clone(), nCurPos );
-                    pAct->Delete();
+                    MetaAction* pDeleteAction = rOutMtf.ReplaceAction( pModAct = pAct->Clone(), nCurPos );
+                    assert(pDeleteAction);
+                    pDeleteAction->Delete();
                 }
                 else
                     pModAct = pAct;
diff --git a/svtools/source/graphic/provider.cxx b/svtools/source/graphic/provider.cxx
index 1407087..7148fa3 100644
--- a/svtools/source/graphic/provider.cxx
+++ b/svtools/source/graphic/provider.cxx
@@ -742,8 +742,9 @@ void ImplApplyFilterData( ::Graphic& rGraphic, uno::Sequence< beans::PropertyVal
                         else
                             pNewAction = new MetaBmpExScaleAction( aPos, aSize, aGraphic.GetBitmapEx() );
 
-                        aMtf.ReplaceAction( pNewAction, i );
-                        pAction->Delete();
+                        MetaAction* pDeleteAction = aMtf.ReplaceAction( pNewAction, i );
+                        if(pDeleteAction)
+                            pDeleteAction->Delete();
                         break;
                     }
                     default:
diff --git a/vcl/inc/vcl/gdimtf.hxx b/vcl/inc/vcl/gdimtf.hxx
index ecefb90..4e7f38e 100644
--- a/vcl/inc/vcl/gdimtf.hxx
+++ b/vcl/inc/vcl/gdimtf.hxx
@@ -199,6 +199,9 @@ public:
     MetaAction*     NextAction();
     MetaAction*     GetAction( size_t nAction ) const;
     MetaAction*     GetCurAction() const { return GetAction( nCurrentActionElement ); }
+    /**
+     * @param pAction takes ownership
+     */
     MetaAction*     ReplaceAction( MetaAction* pAction, size_t nAction );
 
     const Size&     GetPrefSize() const { return aPrefSize; }
diff --git a/vcl/source/gdi/cvtsvm.cxx b/vcl/source/gdi/cvtsvm.cxx
index 2427d99..869f726 100644
--- a/vcl/source/gdi/cvtsvm.cxx
+++ b/vcl/source/gdi/cvtsvm.cxx
@@ -627,12 +627,13 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
                             // Subdivided for better quality for older usages
                             if(1 == aInputPolyPolygon.Count())
                             {
-                                rMtf.ReplaceAction(
+                                MetaAction* pAction = rMtf.ReplaceAction(
                                     new MetaPolyLineAction(
                                         aInputPolyPolygon.GetObject(0),
                                         pPolyLineAction->GetLineInfo()),
                                     nLastPolygonAction);
-                                pPolyLineAction->Delete();
+                                if(pAction)
+                                    pAction->Delete();
                             }
                         }
                         else
@@ -645,11 +646,12 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
                                 // same sub-polygon count
                                 if(pPolyPolygonAction->GetPolyPolygon().Count() == aInputPolyPolygon.Count())
                                 {
-                                    rMtf.ReplaceAction(
+                                    MetaAction* pAction = rMtf.ReplaceAction(
                                         new MetaPolyPolygonAction(
                                             aInputPolyPolygon),
                                         nLastPolygonAction);
-                                    pPolyPolygonAction->Delete();
+                                    if(pAction)
+                                        pAction->Delete();
                                 }
                             }
                             else
@@ -661,11 +663,12 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf )
                                     // replace MetaPolygonAction
                                     if(1 == aInputPolyPolygon.Count())
                                     {
-                                        rMtf.ReplaceAction(
+                                        MetaAction* pAction = rMtf.ReplaceAction(
                                             new MetaPolygonAction(
                                                 aInputPolyPolygon.GetObject(0)),
                                             nLastPolygonAction);
-                                        pPolygonAction->Delete();
+                                        if(pAction)
+                                            pAction->Delete();
                                     }
                                 }
                             }
diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx
index a1d2c36..ab53ac8 100644
--- a/vcl/source/gdi/gdimtf.cxx
+++ b/vcl/source/gdi/gdimtf.cxx
@@ -210,7 +210,12 @@ MetaAction* GDIMetaFile::NextAction()
 MetaAction* GDIMetaFile::ReplaceAction( MetaAction* pAction, size_t nAction )
 {
     if ( nAction >= aList.size() )
+    {
+        // this method takes ownership of pAction and is
+        // therefore responsible for deleting it
+        pAction->Delete();
         return NULL;
+    }
     //fdo#39995 This does't increment the incoming action ref-count nor does it
     //decrement the outgoing action ref-count
     std::swap(pAction, aList[nAction]);
commit aed9755db3de7b53cdf227c7cbcb782568649fac
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat Mar 2 03:04:05 2013 +0100

    coverity#736569: fix memory leak
    
    Change-Id: I57e187b41e7ed0e8c10a791af23ef22a4acb7df8

diff --git a/vcl/source/gdi/bitmap4.cxx b/vcl/source/gdi/bitmap4.cxx
index dccb5fa..882ae05 100644
--- a/vcl/source/gdi/bitmap4.cxx
+++ b/vcl/source/gdi/bitmap4.cxx
@@ -1117,7 +1117,10 @@ bool Bitmap::ImplSeparableBlurFilter(const double radius)
     delete[] pCount;
 
     if ( !bResult )
+    {
+        delete[] pBlurVector;
         return bResult;
+    }
 
     // Swap current bitmap with new bitmap
     ImplAssignWithSize( aNewBitmap );
commit 290451b92aa2725b43380b9d4cfea54ddb90ff33
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat Mar 2 02:53:46 2013 +0100

    coverity#736322: fix memory leak
    
    Change-Id: I63037b8f128ed9249580cabfe9aab898ead0f89d

diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx
index 9c25914..8cb338c 100644
--- a/cui/source/options/treeopt.cxx
+++ b/cui/source/options/treeopt.cxx
@@ -2156,10 +2156,7 @@ VectorOfNodes OfaTreeOptionsDialog::LoadNodes(
                                 }
                             }
                             else
-                                pNode->m_aLeaves.push_back(
-                                    new OptionsLeaf(
-                                        sId, sLeafLabel, sLeafURL,
-                                        sEventHdl, sLeafGrpId, nLeafGrpIdx ) );
+                                pNode->m_aLeaves.push_back( pLeaf );
                         }
                     }
                 }
commit a0e717596dbee0e79e481b1be9f09154331d7914
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat Mar 2 02:38:19 2013 +0100

    coverity#736939: swapped arguments
    
    Change-Id: I66f44ba02855cb9e1f9a986b6f60aa9710e117bd

diff --git a/chart2/source/controller/dialogs/res_BarGeometry.cxx b/chart2/source/controller/dialogs/res_BarGeometry.cxx
index 303f219..791b9c8 100644
--- a/chart2/source/controller/dialogs/res_BarGeometry.cxx
+++ b/chart2/source/controller/dialogs/res_BarGeometry.cxx
@@ -60,7 +60,7 @@ Size BarGeometryResources::GetSizePixel() const
     if( nWidth < m_aFT_Geometry.GetSizePixel().Width() )
         nWidth = m_aFT_Geometry.GetSizePixel().Width();
 
-    return Size( nHeight, nWidth );
+    return Size( nWidth, nHeight );
 }
 BarGeometryResources::~BarGeometryResources()
 {
commit 9a05a482b0d695a663ec4ca14e1ee43b839f78b2
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat Mar 2 02:22:04 2013 +0100

    coverity#704453: new[] vs delete mismatch
    
    Change-Id: Idf32727e40605ab00c0423f57dbbcd744e898f7c

diff --git a/sw/source/filter/ww1/w1class.cxx b/sw/source/filter/ww1/w1class.cxx
index e39e8d3..38b744b 100644
--- a/sw/source/filter/ww1/w1class.cxx
+++ b/sw/source/filter/ww1/w1class.cxx
@@ -458,7 +458,7 @@ Ww1Sprm::Ww1Sprm(SvStream& rStream, sal_uLong ulFilePos)
 
 Ww1Sprm::~Ww1Sprm()
 {
-    delete pArr;
+    delete[] pArr;
     delete p;
 }
 
@@ -532,7 +532,7 @@ sal_Bool Ww1Sprm::Fill(sal_uInt16 index, sal_uInt8& nId, sal_uInt16& nL, sal_uIn
 sal_Bool Ww1Sprm::ReCalc()
 {
     sal_Bool bRet = sal_True;
-    delete pArr;
+    delete[] pArr;
     pArr = NULL;
     count = 0;
     if (nCountBytes != 255) // not unused?


More information about the Libreoffice-commits mailing list