mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Fix potential crash using std::sort
It's entirely unclear why std::sort sometimes accesses the element with index -1. In my limited testing switching to qSort avoids that. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
37aebe0b2e
commit
f8a3a85210
2 changed files with 3 additions and 4 deletions
|
@ -103,7 +103,6 @@ uint32_t create_dive_site(const char *name)
|
|||
uint32_t create_dive_site_with_gps(const char *name, degrees_t latitude, degrees_t longitude)
|
||||
{
|
||||
struct dive_site *ds = alloc_dive_site();
|
||||
ds->uuid = dive_site_getUniqId();
|
||||
ds->name = copy_string(name);
|
||||
ds->latitude = latitude;
|
||||
ds->longitude = longitude;
|
||||
|
|
|
@ -44,7 +44,7 @@ void LocationInformationModel::update()
|
|||
{
|
||||
beginResetModel();
|
||||
internalRowCount = dive_site_table.nr;
|
||||
std::sort(dive_site_table.dive_sites, dive_site_table.dive_sites + dive_site_table.nr, dive_site_less_than);
|
||||
qSort(dive_site_table.dive_sites, dive_site_table.dive_sites + dive_site_table.nr, dive_site_less_than);
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
|
@ -55,8 +55,8 @@ int32_t LocationInformationModel::addDiveSite(const QString& name, int lon, int
|
|||
longitude.udeg = lon;
|
||||
|
||||
beginInsertRows(QModelIndex(), dive_site_table.nr, dive_site_table.nr);
|
||||
int32_t uuid = create_dive_site_with_gps(name.toUtf8().data(), latitude, longitude);
|
||||
std::sort(dive_site_table.dive_sites, dive_site_table.dive_sites + dive_site_table.nr, dive_site_less_than);
|
||||
uint32_t uuid = create_dive_site_with_gps(name.toUtf8().data(), latitude, longitude);
|
||||
qSort(dive_site_table.dive_sites, dive_site_table.dive_sites + dive_site_table.nr, dive_site_less_than);
|
||||
internalRowCount = dive_site_table.nr;
|
||||
endInsertRows();
|
||||
return uuid;
|
||||
|
|
Loading…
Reference in a new issue