mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +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)
|
uint32_t create_dive_site_with_gps(const char *name, degrees_t latitude, degrees_t longitude)
|
||||||
{
|
{
|
||||||
struct dive_site *ds = alloc_dive_site();
|
struct dive_site *ds = alloc_dive_site();
|
||||||
ds->uuid = dive_site_getUniqId();
|
|
||||||
ds->name = copy_string(name);
|
ds->name = copy_string(name);
|
||||||
ds->latitude = latitude;
|
ds->latitude = latitude;
|
||||||
ds->longitude = longitude;
|
ds->longitude = longitude;
|
||||||
|
|
|
@ -44,7 +44,7 @@ void LocationInformationModel::update()
|
||||||
{
|
{
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
internalRowCount = dive_site_table.nr;
|
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();
|
endResetModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,8 +55,8 @@ int32_t LocationInformationModel::addDiveSite(const QString& name, int lon, int
|
||||||
longitude.udeg = lon;
|
longitude.udeg = lon;
|
||||||
|
|
||||||
beginInsertRows(QModelIndex(), dive_site_table.nr, dive_site_table.nr);
|
beginInsertRows(QModelIndex(), dive_site_table.nr, dive_site_table.nr);
|
||||||
int32_t uuid = create_dive_site_with_gps(name.toUtf8().data(), latitude, longitude);
|
uint32_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);
|
qSort(dive_site_table.dive_sites, dive_site_table.dive_sites + dive_site_table.nr, dive_site_less_than);
|
||||||
internalRowCount = dive_site_table.nr;
|
internalRowCount = dive_site_table.nr;
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
return uuid;
|
return uuid;
|
||||||
|
|
Loading…
Add table
Reference in a new issue