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

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Dec 19 06:05:18 UTC 2018


 io/source/acceptor/acc_pipe.cxx   |    5 ++---
 io/source/acceptor/acc_socket.cxx |    6 ++----
 io/source/connector/connector.cxx |   10 ++++------
 3 files changed, 8 insertions(+), 13 deletions(-)

New commits:
commit 36e9ecd900fec7e4cc517d829345bd3e8406be59
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Tue Dec 18 12:00:09 2018 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Wed Dec 19 07:04:51 2018 +0100

    use unique_ptr in io
    
    fixing a leak in PipeAcceptor::accept
    
    Change-Id: Id47da5e2a2c4060958aee9233feec859aebc69c7
    Reviewed-on: https://gerrit.libreoffice.org/65345
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/io/source/acceptor/acc_pipe.cxx b/io/source/acceptor/acc_pipe.cxx
index 4410760c6f26..50a9939a2144 100644
--- a/io/source/acceptor/acc_pipe.cxx
+++ b/io/source/acceptor/acc_pipe.cxx
@@ -148,19 +148,18 @@ namespace io_acceptor
             OUString error = "io.acceptor: pipe already closed" + m_sPipeName;
             throw ConnectionSetupException( error );
         }
-        PipeConnection *pConn = new PipeConnection( m_sConnectionDescription );
+        std::unique_ptr<PipeConnection> pConn(new PipeConnection( m_sConnectionDescription ));
 
         oslPipeError status = pipe.accept( pConn->m_pipe );
 
         if( m_bClosed )
         {
             // stopAccepting was called !
-            delete pConn;
             return Reference < XConnection >();
         }
         else if( osl_Pipe_E_None == status )
         {
-            return Reference < XConnection > ( static_cast<XConnection *>(pConn) );
+            return Reference < XConnection > ( static_cast<XConnection *>(pConn.release()) );
         }
         else
         {
diff --git a/io/source/acceptor/acc_socket.cxx b/io/source/acceptor/acc_socket.cxx
index f34b3635eb7b..5a9956eb75d9 100644
--- a/io/source/acceptor/acc_socket.cxx
+++ b/io/source/acceptor/acc_socket.cxx
@@ -330,17 +330,15 @@ namespace io_acceptor {
 
     Reference< XConnection > SocketAcceptor::accept( )
     {
-        SocketConnection *pConn = new SocketConnection( m_sConnectionDescription );
+        std::unique_ptr<SocketConnection> pConn(new SocketConnection( m_sConnectionDescription ));
 
         if( m_socket.acceptConnection( pConn->m_socket )!= osl_Socket_Ok )
         {
             // stopAccepting was called
-            delete pConn;
             return Reference < XConnection > ();
         }
         if( m_bClosed )
         {
-            delete pConn;
             return Reference < XConnection > ();
         }
 
@@ -358,7 +356,7 @@ namespace io_acceptor {
                                        sizeof( nTcpNoDelay ) , osl_Socket_LevelTcp );
         }
 
-        return Reference < XConnection > ( static_cast<XConnection *>(pConn) );
+        return Reference < XConnection > ( static_cast<XConnection *>(pConn.release()) );
     }
 
     void SocketAcceptor::stopAccepting()
diff --git a/io/source/connector/connector.cxx b/io/source/connector/connector.cxx
index 1de3ee92ec2d..c95219d53ab9 100644
--- a/io/source/connector/connector.cxx
+++ b/io/source/connector/connector.cxx
@@ -85,11 +85,11 @@ namespace stoc_connector
             {
                 OUString aName(aDesc.getParameter("name"));
 
-                PipeConnection *pConn = new PipeConnection( sConnectionDescription );
+                std::unique_ptr<PipeConnection> pConn(new PipeConnection( sConnectionDescription ));
 
                 if( pConn->m_pipe.create( aName.pData, osl_Pipe_OPEN, osl::Security() ) )
                 {
-                    r.set( static_cast<XConnection *>(pConn) );
+                    r.set( static_cast<XConnection *>(pConn.release()) );
                 }
                 else
                 {
@@ -97,7 +97,6 @@ namespace stoc_connector
                         "Connector : couldn't connect to pipe " + aName + "("
                         + OUString::number(pConn->m_pipe.getError()) + ")");
                     SAL_WARN("io.connector", sMessage);
-                    delete pConn;
                     throw NoConnectException( sMessage );
                 }
             }
@@ -114,7 +113,7 @@ namespace stoc_connector
                 bool bTcpNoDelay
                     = aDesc.getParameter("tcpnodelay").toInt32() != 0;
 
-                SocketConnection *pConn = new SocketConnection( sConnectionDescription);
+                std::unique_ptr<SocketConnection> pConn(new SocketConnection( sConnectionDescription));
 
                 SocketAddr AddrTarget( aHost.pData, nPort );
                 if(pConn->m_socket.connect(AddrTarget) != osl_Socket_Ok)
@@ -123,7 +122,6 @@ namespace stoc_connector
                     OUString sError = pConn->m_socket.getErrorAsString();
                     sMessage += sError;
                     sMessage += ")";
-                    delete pConn;
                     throw NoConnectException( sMessage );
                 }
                 // we enable tcpNoDelay for loopback connections because
@@ -135,7 +133,7 @@ namespace stoc_connector
                                                sizeof( nTcpNoDelay ) , osl_Socket_LevelTcp );
                 }
                 pConn->completeConnectionString();
-                r.set( static_cast<XConnection *>(pConn) );
+                r.set( static_cast<XConnection *>(pConn.release()) );
             }
             else
             {


More information about the Libreoffice-commits mailing list