summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2022-10-06 18:26:13 +0200
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2022-10-11 09:18:52 +0200
commit4c8a4c84e0e28188bd049a3e9b490e3a49f5e0cc (patch)
treeabb206d6b9c10610bac156b704965d5c257e29ce
parenteafc88c298cc027ed297cd9661be2e24e04de10c (diff)
downloadqtlocation-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.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));