From ae5698fa8ef0ba3cad555a18a15e659bb9f835a0 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Fri, 25 May 2018 13:02:11 +0200 Subject: [PATCH] QmlProfiler: Avoid double delete in details rewriter test Using unique_ptr for parented QObjects is maybe not the best idea in the first place ... Change-Id: I95e2d1dd27f8f3d42d90d206e4fed0d866d1ea49 Reviewed-by: Christian Stenger --- .../tests/qmlprofilerdetailsrewriter_test.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmlprofiler/tests/qmlprofilerdetailsrewriter_test.cpp b/src/plugins/qmlprofiler/tests/qmlprofilerdetailsrewriter_test.cpp index 986e23b09bb..b9b8d4280c6 100644 --- a/src/plugins/qmlprofiler/tests/qmlprofilerdetailsrewriter_test.cpp +++ b/src/plugins/qmlprofiler/tests/qmlprofilerdetailsrewriter_test.cpp @@ -202,9 +202,15 @@ void QmlProfilerDetailsRewriterTest::seedRewriter() DummyProject *project = new DummyProject(Utils::FileName::fromString(filename)); ProjectExplorer::SessionManager::addProject(project); - std::unique_ptr target = project->createTarget(kit); - m_rewriter.populateFileFinder(target.get()); + { + // Make sure the uniqe_ptr gets deleted before the project. + // Otherwise we'll get a double free because the target is also parented to the project + // and unique_ptr doesn't know anything about QObject parent/child relationships. + std::unique_ptr target = project->createTarget(kit); + m_rewriter.populateFileFinder(target.get()); + } + ProjectExplorer::SessionManager::removeProject(project); ProjectExplorer::KitManager::deleteKit(kit); }