From b0f1b258064bcbeb9cfc70dd4346dde5a90546ea Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sat, 27 Jul 2019 22:30:09 +0200 Subject: Crash fix: prevent crash in MapLocationModel::reload Commit 0c387549164d7eec3ea6647c54ada2fba7f8d5e6 introduced a bug in MapLocationModel::reload() by setting an entry in the name-to-location map before the location was initialized. Move the setting of the map entry back where it was before: after the assignment of the location variable. Moreover, define the location variable directly on allocation of the location to avoid thus bugs in the future. Why did we not get a "might be used unitialized" warning anyway? Signed-off-by: Berthold Stoeger --- qt-models/maplocationmodel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'qt-models') diff --git a/qt-models/maplocationmodel.cpp b/qt-models/maplocationmodel.cpp index b1fe16b60..1acea421e 100644 --- a/qt-models/maplocationmodel.cpp +++ b/qt-models/maplocationmodel.cpp @@ -140,7 +140,6 @@ void MapLocationModel::reload(QObject *map) m_selectedDs.clear(); QMap locationNameMap; - MapLocation *location; #ifdef SUBSURFACE_MOBILE bool diveSiteMode = false; @@ -184,10 +183,11 @@ void MapLocationModel::reload(QObject *map) if (dsCoord.distanceTo(coord) < MIN_DISTANCE_BETWEEN_DIVE_SITES_M) continue; } - locationNameMap[name] = location; } - location = new MapLocation(ds, dsCoord, name); + MapLocation *location = new MapLocation(ds, dsCoord, name); m_mapLocations.append(location); + if (!diveSiteMode) + locationNameMap[name] = location; } endResetModel(); -- cgit v1.2.3-70-g09d2