mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Dive site: close dive site edit widget when dive site is deleted
The application could be crashed by 1) Create dive site 2) Edit dive site 3) Undo until dive site is removed 4) Continue editing now non-existing dive site Therefore, hook into the dive-site-deleted signal and if the currently edited dive site is deleted, close the widget. When closing the widget, make sure that the potentially dangling pointer is reset to zero so that there is no other potential use-after-free bug. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
4479ccf8f3
commit
e3cd0891d3
3 changed files with 14 additions and 0 deletions
|
@ -36,6 +36,7 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo
|
|||
ui.diveSiteCoordinates->installEventFilter(this);
|
||||
|
||||
connect(&diveListNotifier, &DiveListNotifier::diveSiteChanged, this, &LocationInformationWidget::diveSiteChanged);
|
||||
connect(&diveListNotifier, &DiveListNotifier::diveSiteDeleted, this, &LocationInformationWidget::diveSiteDeleted);
|
||||
connect(qPrefUnits::instance(), &qPrefUnits::unit_systemChanged, this, &LocationInformationWidget::unitsChanged);
|
||||
unitsChanged();
|
||||
|
||||
|
@ -178,8 +179,19 @@ static location_t parseGpsText(const QString &text)
|
|||
return { {0}, {0} };
|
||||
}
|
||||
|
||||
void LocationInformationWidget::diveSiteDeleted(struct dive_site *ds, int)
|
||||
{
|
||||
// If the currently edited dive site was removed under our feet, close the widget.
|
||||
// This will reset the dangling pointer.
|
||||
if (ds && ds == diveSite)
|
||||
acceptChanges();
|
||||
}
|
||||
|
||||
void LocationInformationWidget::acceptChanges()
|
||||
{
|
||||
diveSite = nullptr;
|
||||
closeDistance = 0;
|
||||
|
||||
MainWindow::instance()->diveList->setEnabled(true);
|
||||
MainWindow::instance()->setEnabledToolbar(true);
|
||||
MainWindow::instance()->setApplicationState(ApplicationState::Default);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue