include/vcl/builder.hxx | 2 - sc/qa/extras/sccondformats.cxx | 67 +++++++++++++++++------------------------ vcl/source/gdi/impgraph.cxx | 1 vcl/source/window/builder.cxx | 2 - 4 files changed, 32 insertions(+), 40 deletions(-)
New commits: commit a4bd382c8a6cf5a79898c692752408477cd4cfc5 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Mar 13 11:54:57 2016 +0100 add assert preventing memory leak Change-Id: I0c659bf4fab2319f06df09dd11a768a295e95722 diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx index a8f1d0c..deb143e 100644 --- a/vcl/source/gdi/impgraph.cxx +++ b/vcl/source/gdi/impgraph.cxx @@ -943,6 +943,7 @@ sal_uLong ImpGraphic::ImplGetAnimationLoopCount() const void ImpGraphic::ImplSetContext( GraphicReader* pReader ) { + assert(!mpContext); mpContext = pReader; mbDummyContext = false; } commit d565391dffaddd302c1ec0735c96473dc33827bb Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Mar 13 11:53:06 2016 +0100 this old concept was just a bad idea by me Change-Id: Ib13a7a252bdb3f54e520076666f98498c10b4d47 diff --git a/sc/qa/extras/sccondformats.cxx b/sc/qa/extras/sccondformats.cxx index 8be88bb..49e6c20 100644 --- a/sc/qa/extras/sccondformats.cxx +++ b/sc/qa/extras/sccondformats.cxx @@ -29,8 +29,6 @@ using namespace css; namespace sc_apitest { -#define NUMBER_OF_TESTS 1 - class ScConditionalFormatTest : public CalcUnoApiTest { public: @@ -49,13 +47,9 @@ public: CPPUNIT_TEST_SUITE_END(); private: - static sal_Int32 nTest; - static uno::Reference< lang::XComponent > mxComponent; + uno::Reference< lang::XComponent > mxComponent; }; -sal_Int32 ScConditionalFormatTest::nTest = 0; -uno::Reference< lang::XComponent > ScConditionalFormatTest::mxComponent; - ScConditionalFormatTest::ScConditionalFormatTest() : CalcUnoApiTest("sc/qa/unit/data/ods") { @@ -223,16 +217,14 @@ void ScConditionalFormatTest::testUndoAnchor() void ScConditionalFormatTest::setUp() { - nTest++; CalcUnoApiTest::setUp(); } void ScConditionalFormatTest::tearDown() { - if (nTest == NUMBER_OF_TESTS) + if (mxComponent.is()) { closeDocument(mxComponent); - mxComponent.clear(); } CalcUnoApiTest::tearDown(); commit 70b4de3257759057102b399a8e6bdbca4bff87b7 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Mar 13 11:52:24 2016 +0100 no need for strange assert fail message Change-Id: Id982d0b12e18213a8d76a2d562109d7e2a41d8b5 diff --git a/sc/qa/extras/sccondformats.cxx b/sc/qa/extras/sccondformats.cxx index 0ac865b..8be88bb 100644 --- a/sc/qa/extras/sccondformats.cxx +++ b/sc/qa/extras/sccondformats.cxx @@ -122,7 +122,6 @@ void ScConditionalFormatTest::testCondFormat() void ScConditionalFormatTest::testUndoAnchor() { - const OString sFailedMessage = OString("Failed on :"); OUString aFileURL; createFileURL("document_with_linked_graphic.ods", aFileURL); // open the document with graphic included @@ -134,48 +133,48 @@ void ScConditionalFormatTest::testUndoAnchor() CPPUNIT_ASSERT_MESSAGE("Failed to access document shell", pFoundShell); ScDocShell* xDocSh = dynamic_cast<ScDocShell*>(pFoundShell); - CPPUNIT_ASSERT(xDocSh != nullptr); + CPPUNIT_ASSERT(xDocSh); // Check whether graphic imported well ScDocument& rDoc = xDocSh->GetDocument(); ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer(); - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), pDrawLayer != nullptr ); + CPPUNIT_ASSERT(pDrawLayer); const SdrPage *pPage = pDrawLayer->GetPage(0); - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), pPage != nullptr ); + CPPUNIT_ASSERT(pPage); SdrGrafObj* pObject = dynamic_cast<SdrGrafObj*>(pPage->GetObj(0)); - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), pObject != nullptr ); - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), pObject->IsLinkedGraphic() ); + CPPUNIT_ASSERT(pObject); + CPPUNIT_ASSERT(pObject->IsLinkedGraphic()); const GraphicObject& rGraphicObj = pObject->GetGraphicObject(true); - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), !rGraphicObj.IsSwappedOut()); - CPPUNIT_ASSERT_EQUAL_MESSAGE( sFailedMessage.getStr(), GRAPHIC_BITMAP, rGraphicObj.GetGraphic().GetType()); - CPPUNIT_ASSERT_EQUAL_MESSAGE( sFailedMessage.getStr(), sal_uLong(864900), rGraphicObj.GetSizeBytes()); + CPPUNIT_ASSERT(!rGraphicObj.IsSwappedOut()); + CPPUNIT_ASSERT_EQUAL(GRAPHIC_BITMAP, rGraphicObj.GetGraphic().GetType()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(864900), rGraphicObj.GetSizeBytes()); // Get the document controller ScTabViewShell* pViewShell = xDocSh->GetBestViewShell(false); - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), pViewShell != nullptr ); + CPPUNIT_ASSERT(pViewShell); // Get the draw view of the document ScDrawView* pDrawView = pViewShell->GetViewData().GetScDrawView(); - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), pDrawView != nullptr ); + CPPUNIT_ASSERT(pDrawView); // Select graphic object pDrawView->MarkNextObj(); - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), pDrawView->AreObjectsMarked() ); + CPPUNIT_ASSERT(pDrawView->AreObjectsMarked() ); // Set Cell Anchor ScDrawLayer::SetCellAnchoredFromPosition(*pObject, rDoc, 0); // Check state ScAnchorType oldType = ScDrawLayer::GetAnchorType(*pObject); - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), oldType == SCA_CELL ); + CPPUNIT_ASSERT(oldType == SCA_CELL ); // Change all selected objects to page anchor pViewShell->GetViewData().GetDispatcher().Execute(SID_ANCHOR_PAGE); // Check state ScAnchorType newType = ScDrawLayer::GetAnchorType(*pObject); - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), newType == SCA_PAGE ); + CPPUNIT_ASSERT(newType == SCA_PAGE ); // Undo and check its result. SfxUndoManager* pUndoMgr = rDoc.GetUndoManager(); @@ -183,41 +182,41 @@ void ScConditionalFormatTest::testUndoAnchor() pUndoMgr->Undo(); // Check anchor type - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), oldType == ScDrawLayer::GetAnchorType(*pObject) ); - CPPUNIT_ASSERT_EQUAL_MESSAGE( sFailedMessage.getStr(), GRAPHIC_BITMAP, rGraphicObj.GetGraphic().GetType()); - CPPUNIT_ASSERT_EQUAL_MESSAGE( sFailedMessage.getStr(), sal_uLong(864900), rGraphicObj.GetSizeBytes()); + CPPUNIT_ASSERT(oldType == ScDrawLayer::GetAnchorType(*pObject) ); + CPPUNIT_ASSERT_EQUAL(GRAPHIC_BITMAP, rGraphicObj.GetGraphic().GetType()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(864900), rGraphicObj.GetSizeBytes()); pUndoMgr->Redo(); // Check anchor type - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), newType == ScDrawLayer::GetAnchorType(*pObject) ); - CPPUNIT_ASSERT_EQUAL_MESSAGE( sFailedMessage.getStr(), GRAPHIC_BITMAP, rGraphicObj.GetGraphic().GetType()); - CPPUNIT_ASSERT_EQUAL_MESSAGE( sFailedMessage.getStr(), sal_uLong(864900), rGraphicObj.GetSizeBytes()); + CPPUNIT_ASSERT(newType == ScDrawLayer::GetAnchorType(*pObject) ); + CPPUNIT_ASSERT_EQUAL(GRAPHIC_BITMAP, rGraphicObj.GetGraphic().GetType()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(864900), rGraphicObj.GetSizeBytes()); ScDrawLayer::SetPageAnchored(*pObject); // Check state oldType = ScDrawLayer::GetAnchorType(*pObject); - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), oldType == SCA_PAGE ); + CPPUNIT_ASSERT(oldType == SCA_PAGE ); // Change all selected objects to cell anchor pViewShell->GetViewData().GetDispatcher().Execute(SID_ANCHOR_CELL); // Check state newType = ScDrawLayer::GetAnchorType(*pObject); - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), newType == SCA_CELL ); + CPPUNIT_ASSERT(newType == SCA_CELL ); pUndoMgr->Undo(); // Check anchor type - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), oldType == ScDrawLayer::GetAnchorType(*pObject) ); - CPPUNIT_ASSERT_EQUAL_MESSAGE( sFailedMessage.getStr(), GRAPHIC_BITMAP, rGraphicObj.GetGraphic().GetType()); - CPPUNIT_ASSERT_EQUAL_MESSAGE( sFailedMessage.getStr(), sal_uLong(864900), rGraphicObj.GetSizeBytes()); + CPPUNIT_ASSERT(oldType == ScDrawLayer::GetAnchorType(*pObject) ); + CPPUNIT_ASSERT_EQUAL(GRAPHIC_BITMAP, rGraphicObj.GetGraphic().GetType()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(864900), rGraphicObj.GetSizeBytes()); pUndoMgr->Redo(); // Check anchor type - CPPUNIT_ASSERT_MESSAGE( sFailedMessage.getStr(), newType == ScDrawLayer::GetAnchorType(*pObject) ); - CPPUNIT_ASSERT_EQUAL_MESSAGE( sFailedMessage.getStr(), GRAPHIC_BITMAP, rGraphicObj.GetGraphic().GetType()); - CPPUNIT_ASSERT_EQUAL_MESSAGE( sFailedMessage.getStr(), sal_uLong(864900), rGraphicObj.GetSizeBytes()); + CPPUNIT_ASSERT(newType == ScDrawLayer::GetAnchorType(*pObject) ); + CPPUNIT_ASSERT_EQUAL(GRAPHIC_BITMAP, rGraphicObj.GetGraphic().GetType()); + CPPUNIT_ASSERT_EQUAL(sal_uLong(864900), rGraphicObj.GetSizeBytes()); xComponent->dispose(); } commit 424966f0e967150ae51eaa886c12561cd7d3226e Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Sun Mar 13 11:48:47 2016 +0100 fix strange memory leak in VclBuilder Change-Id: Iba34c25b19a94a8d4c147f8ccaef95f34183414b diff --git a/include/vcl/builder.hxx b/include/vcl/builder.hxx index da6d091..a1db0f6 100644 --- a/include/vcl/builder.hxx +++ b/include/vcl/builder.hxx @@ -304,7 +304,7 @@ private: bool m_bToplevelHasDeferredInit; bool m_bToplevelHasDeferredProperties; bool m_bToplevelParentFound; - ParserState *m_pParserState; + std::unique_ptr<ParserState> m_pParserState; vcl::Window *get_by_name(const OString& sID); void delete_by_name(const OString& sID); diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index cc11c28..b55222b 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -484,7 +484,7 @@ VclBuilder::VclBuilder(vcl::Window *pParent, const OUString& sUIDir, const OUStr } //drop maps, etc. that we don't need again - delete m_pParserState; + m_pParserState.reset(); SAL_WARN_IF(!m_sID.isEmpty() && (!m_bToplevelParentFound && !get_by_name(m_sID)), "vcl.layout", "Requested top level widget \"" << m_sID.getStr() << _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits