[Libreoffice-commits] core.git: Branch 'libreoffice-5-4' - sc/inc sc/qa sc/source

Eike Rathke erack at redhat.com
Tue Mar 27 11:10:01 UTC 2018


 sc/inc/dbdata.hxx                  |    9 +++++++--
 sc/qa/unit/ucalc_sharedformula.cxx |    4 ----
 sc/source/filter/xml/xmldrani.cxx  |    5 +----
 sc/source/ui/docshell/dbdocfun.cxx |    1 -
 4 files changed, 8 insertions(+), 11 deletions(-)

New commits:
commit c4946ba195c9f0c2fb3f18f1028eea725c920e2e
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Dec 8 15:59:53 2017 +0100

    ofz#7121 NamedDBs::insert takes ownership of its argument
    
    at one point this was based on std::auto_ptr and didn't
    free its arg on failure
    
    Adapt description to reality
    
    Change-Id: I24133fb6c52bd7500037364120cb11d1b1f099c2
    (cherry picked from commit f161cdc979587488df83e63002bee7ee15152d42)
    
    Change-Id: I8aeed6876d80b7ebe4ebb5e2cfd12e00420bd207
    Reviewed-on: https://gerrit.libreoffice.org/51934
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/sc/inc/dbdata.hxx b/sc/inc/dbdata.hxx
index ca1a19f10263..e09ef4479ba5 100644
--- a/sc/inc/dbdata.hxx
+++ b/sc/inc/dbdata.hxx
@@ -257,8 +257,13 @@ public:
         ScDBData* findByIndex(sal_uInt16 nIndex);
         ScDBData* findByUpperName(const OUString& rName);
         iterator findByUpperName2(const OUString& rName);
-        // Takes ownership of p iff it returns true:
-        SAL_WARN_UNUSED_RESULT bool insert(ScDBData* p);
+
+        /** Takes ownership of p and attempts to insert it into the collection.
+            Deletes p if it could not be inserted, i.e. duplicate name.
+            @return <TRUE/> if inserted, else <FALSE/>.
+         */
+        bool insert(ScDBData* p);
+
         void erase(const iterator& itr);
         bool empty() const;
         size_t size() const;
diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx
index 204e9dfaef30..e9ccff272659 100644
--- a/sc/qa/unit/ucalc_sharedformula.cxx
+++ b/sc/qa/unit/ucalc_sharedformula.cxx
@@ -1559,8 +1559,6 @@ void Test::testSharedFormulaUpdateOnDBChange()
     // Define database range 'MyRange' for A1:A2.
     ScDBData* pData = new ScDBData("MyRange", 0, 0, 0, 0, 1);
     bool bInserted = pDBs->getNamedDBs().insert(pData);
-    if (!bInserted)
-        delete pData;
     CPPUNIT_ASSERT_MESSAGE("Failed to insert a new database range.", bInserted);
 
     // Insert in C2:C4 a group of formula cells that reference MyRange.
@@ -1584,8 +1582,6 @@ void Test::testSharedFormulaUpdateOnDBChange()
     ScDBCollection aNewDBs(m_pDoc);
     ScDBData* pNewData = new ScDBData("MyRange", 0, 0, 0, 0, 3);
     bInserted = aNewDBs.getNamedDBs().insert(pNewData);
-    if (!bInserted)
-        delete pNewData;
     CPPUNIT_ASSERT_MESSAGE("Failed to insert a new database range.", bInserted);
 
     std::vector<ScRange> aDeleted;
diff --git a/sc/source/filter/xml/xmldrani.cxx b/sc/source/filter/xml/xmldrani.cxx
index c38fd98e9f37..ea4e2f8192d5 100644
--- a/sc/source/filter/xml/xmldrani.cxx
+++ b/sc/source/filter/xml/xmldrani.cxx
@@ -465,10 +465,7 @@ void ScXMLDatabaseRangeContext::EndElement()
         if (pData.get())
         {
             setAutoFilterFlags(*pDoc, *pData);
-            if (pDoc->GetDBCollection()->getNamedDBs().insert(pData.get()))
-            {
-                pData.release();
-            }
+            pDoc->GetDBCollection()->getNamedDBs().insert(pData.release());
         }
     }
 }
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index 3cc44bb58843..a46388f0f149 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -170,7 +170,6 @@ bool ScDBDocFunc::RenameDBRange( const OUString& rOld, const OUString& rNew )
         bool bInserted = rDBs.insert(pNewData);
         if (!bInserted)                             // error -> restore old state
         {
-            delete pNewData;
             rDoc.SetDBCollection(pUndoColl);       // belongs to the document then
         }
 


More information about the Libreoffice-commits mailing list