mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 20:43:24 +00:00
core: initialize dive selection after resetting the data
The dive selection was initialized during data-reset. However, this emitted a signal before all data-reset routines were run. Ultimately, this led to access-after-free in the statistics code. Instead, move the select_newest_visible_dive() signal from the divelist-model to the process_loaded_dives() function. There is no point in initializing the selection if the dive data is cleared after all. This change broke closing of the log, because the UI-selection was not reset. Therefore, when clearing the data, clear the selection before proceeding with clearing. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
f299fa37f9
commit
a988e3c135
2 changed files with 4 additions and 2 deletions
|
@ -824,6 +824,9 @@ void process_loaded_dives()
|
|||
|
||||
/* Inform frontend of reset data. This should reset all the models. */
|
||||
emit_reset_signal();
|
||||
|
||||
/* Now that everything is settled, select the newest dive. */
|
||||
select_newest_visible_dive();
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1373,7 +1376,7 @@ int get_dive_id_closest_to(timestamp_t when)
|
|||
void clear_dive_file_data()
|
||||
{
|
||||
fulltext_unregister_all();
|
||||
clear_selection();
|
||||
select_single_dive(NULL); // This is propagate up to the UI and clears all the information.
|
||||
|
||||
while (dive_table.nr)
|
||||
delete_single_dive(0);
|
||||
|
|
|
@ -499,7 +499,6 @@ void DiveTripModelBase::reset()
|
|||
uiNotification(tr("finish populating data store"));
|
||||
endResetModel();
|
||||
uiNotification(tr("setting up internal data structures"));
|
||||
initSelection();
|
||||
emit diveListNotifier.numShownChanged();
|
||||
uiNotification(tr("done setting up internal data structures"));
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue