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

Julien Nabet serval2412 at yahoo.fr
Sun Sep 10 12:32:15 UTC 2017


 cui/source/options/optaboutconfig.cxx |    6 ++++--
 cui/source/options/optaboutconfig.hxx |    2 ++
 2 files changed, 6 insertions(+), 2 deletions(-)

New commits:
commit 8e0352ecba4b7c72086f8b25d3f7fede8906a6d1
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Sat Sep 9 12:12:28 2017 +0200

    tdf#112254: fix memory leak in optaboutconfig (cui)
    
    Store UserData objects in a member defined as vector of unique_ptr
    so we're sure UserData objects will be destroyed when out of the scope
    
    Change-Id: Ib5494ad563272adcf64035300f3213688437fcfc
    Reviewed-on: https://gerrit.libreoffice.org/42123
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Julien Nabet <serval2412 at yahoo.fr>

diff --git a/cui/source/options/optaboutconfig.cxx b/cui/source/options/optaboutconfig.cxx
index 0fe009240837..717ae6d9ccf9 100644
--- a/cui/source/options/optaboutconfig.cxx
+++ b/cui/source/options/optaboutconfig.cxx
@@ -210,7 +210,8 @@ void CuiAboutConfigTabPage::InsertEntry(const OUString& rPropertyPath, const OUS
     pEntry->AddItem(o3tl::make_unique<SvLBoxString>(rStatus));
     pEntry->AddItem(o3tl::make_unique<SvLBoxString>(rType));
     pEntry->AddItem(o3tl::make_unique<SvLBoxString>(rValue));
-    pEntry->SetUserData( new UserData(rPropertyPath) );
+    m_vectorUserData.push_back(o3tl::make_unique<UserData>(rPropertyPath));
+    pEntry->SetUserData(m_vectorUserData.back().get());
 
     if(bInsertToPrefBox)
         m_pPrefBox->Insert( pEntry, pParentEntry );
@@ -291,7 +292,8 @@ void CuiAboutConfigTabPage::FillItems(const Reference< XNameAccess >& xNameAcces
                 pEntry->AddItem(o3tl::make_unique<SvLBoxString>(""));
                 pEntry->AddItem(o3tl::make_unique<SvLBoxString>(""));
 
-                pEntry->SetUserData( new UserData(xNextNameAccess, lineage + 1) );
+                m_vectorUserData.push_back(o3tl::make_unique<UserData>(xNextNameAccess, lineage + 1));
+                pEntry->SetUserData(m_vectorUserData.back().get());
                 pEntry->EnableChildrenOnDemand();
                 m_pPrefBox->Insert( pEntry, pParentEntry );
             }
diff --git a/cui/source/options/optaboutconfig.hxx b/cui/source/options/optaboutconfig.hxx
index b33be6505207..5efef99828e0 100644
--- a/cui/source/options/optaboutconfig.hxx
+++ b/cui/source/options/optaboutconfig.hxx
@@ -24,6 +24,7 @@ namespace svx { class OptHeaderTabListBox; }
 class CuiAboutConfigTabPage;
 class CuiAboutConfigValueDialog;
 struct Prop_Impl;
+struct UserData;
 
 class CuiCustomMultilineEdit : public Edit
 {
@@ -46,6 +47,7 @@ private:
     VclPtr<PushButton> m_pEditBtn;
     VclPtr<PushButton> m_pSearchBtn;
     VclPtr<Edit> m_pSearchEdit;
+    std::vector < std::unique_ptr<UserData> > m_vectorUserData;
 
     SvTreeListEntries m_modifiedPrefBoxEntries;
     std::vector< std::shared_ptr< Prop_Impl > > m_vectorOfModified;


More information about the Libreoffice-commits mailing list