Kaydet (Commit) c40a1722 authored tarafından Eike Rathke's avatar Eike Rathke Kaydeden (comit) Andras Timar

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

(cherry picked from commit f161cdc9)

Reviewed-on: https://gerrit.libreoffice.org/51934Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
Tested-by: 's avatarJenkins <ci@libreoffice.org>
(cherry picked from commit c4946ba1)

Change-Id: I24133fb6c52bd7500037364120cb11d1b1f099c2
8aeed6876d80b7ebe4ebb5e2cfd12e00420bd207
üst 6eaf5fa2
......@@ -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;
......
......@@ -1637,8 +1637,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.
......@@ -1662,8 +1660,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;
......
......@@ -468,10 +468,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());
}
}
}
......
......@@ -168,7 +168,6 @@ bool ScDBDocFunc::RenameDBRange( const OUString& rOld, const OUString& rNew )
bool bInserted = rDBs.insert(pNewData);
if (!bInserted) // Fehler -> alten Zustand wiederherstellen
{
delete pNewData;
rDoc.SetDBCollection(pUndoColl); // gehoert dann dem Dokument
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment