diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2022-10-06 18:26:13 +0200 |
---|---|---|
committer | Ivan Solovev <ivan.solovev@qt.io> | 2022-10-06 20:05:06 +0200 |
commit | 04320df9f53eae8b5895a9a5767e8434ff36be8d (patch) | |
tree | 050b4e69a43a746610197e365b3cfa6bc94fb69d /tests | |
parent | 9cc2d3f33152796a922bb4a1d8f43a8821499cd5 (diff) | |
download | qtlocation-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.cpp | 10 |
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)); |