diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2022-10-06 18:26:13 +0200 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-10-11 09:18:52 +0200 |
commit | 4c8a4c84e0e28188bd049a3e9b490e3a49f5e0cc (patch) | |
tree | abb206d6b9c10610bac156b704965d5c257e29ce | |
parent | eafc88c298cc027ed297cd9661be2e24e04de10c (diff) | |
download | qtlocation-4c8a4c84e0e28188bd049a3e9b490e3a49f5e0cc.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>
(cherry picked from commit 04320df9f53eae8b5895a9a5767e8434ff36be8d)
-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)); |