summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2022-10-06 18:26:13 +0200
committerIvan Solovev <ivan.solovev@qt.io>2022-10-06 20:05:06 +0200
commit04320df9f53eae8b5895a9a5767e8434ff36be8d (patch)
tree050b4e69a43a746610197e365b3cfa6bc94fb69d /tests
parent9cc2d3f33152796a922bb4a1d8f43a8821499cd5 (diff)
downloadqtlocation-04320df9f53eae8b5895a9a5767e8434ff36be8d.tar.gz
tst_QGeoTiledMap: fix memory leak
Use std::unique_ptr to manage QGeoServiceProvider object's lifetime. We cannot create the provider on the stack because it must outlive the child QGeoTiledMap instance. Change-Id: Ic2275fda394175bcb2a7782f887c10326f4c72a0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qgeotiledmap/tst_qgeotiledmap.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/tests/auto/qgeotiledmap/tst_qgeotiledmap.cpp b/tests/auto/qgeotiledmap/tst_qgeotiledmap.cpp
index a466887f..ee9b0b00 100644
--- a/tests/auto/qgeotiledmap/tst_qgeotiledmap.cpp
+++ b/tests/auto/qgeotiledmap/tst_qgeotiledmap.cpp
@@ -73,6 +73,7 @@ private Q_SLOTS:
void fetchTiles_data();
private:
+ std::unique_ptr<QGeoServiceProvider> m_provider;
std::unique_ptr<QGeoTiledMapTest> m_map;
std::unique_ptr<FetchTileCounter> m_tilesCounter;
QGeoTileFetcherTest *m_fetcher;
@@ -104,10 +105,11 @@ void tst_QGeoTiledMap::initTestCase()
parameters["tileSize"] = 256;
parameters["maxZoomLevel"] = 8;
parameters["finishRequestImmediately"] = true;
- QGeoServiceProvider *provider = new QGeoServiceProvider("qmlgeo.test.plugin",parameters);
- provider->setAllowExperimental(true);
- QGeoMappingManager *mappingManager = provider->mappingManager();
- QVERIFY2(provider->error() == QGeoServiceProvider::NoError, "Could not load plugin: " + provider->errorString().toLatin1());
+ m_provider = std::make_unique<QGeoServiceProvider>("qmlgeo.test.plugin", parameters);
+ m_provider->setAllowExperimental(true);
+ QGeoMappingManager *mappingManager = m_provider->mappingManager();
+ QVERIFY2(m_provider->error() == QGeoServiceProvider::NoError,
+ "Could not load plugin: " + m_provider->errorString().toLatin1());
m_map.reset(static_cast<QGeoTiledMapTest*>(mappingManager->createMap(this)));
QVERIFY(m_map);
m_map->setViewportSize(QSize(256, 256));