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:
Dirk Hohndel 2015-06-04 08:45:45 -07:00
parent 37aebe0b2e
commit f8a3a85210
2 changed files with 3 additions and 4 deletions

View file

@ -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;

View file

@ -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;