Avoid duplicate dive_trip entries

When inserting a trip into the dive_trip_list we already check for
duplicate trips, but we still kept the additional dive_trip around.

With this change we instead replace it with the existing one.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2012-09-05 13:54:22 -07:00
parent 6d0af91398
commit 4679f4fbbc
3 changed files with 8 additions and 11 deletions

10
dive.h
View file

@ -305,14 +305,16 @@ static void dump_trip_list(void)
/* insert the trip into the dive_trip_list - but ensure you don't have
* two trips for the same date; but if you have, make sure you don't
* keep the one with less information */
static inline void insert_trip(struct dive *_trip)
static void inline insert_trip(struct dive **trip)
{
GList *result = FIND_TRIP(_trip->when);
struct dive *dive_trip = *trip;
GList *result = FIND_TRIP(dive_trip->when);
if (result) {
if (! DIVE_TRIP(result)->location)
DIVE_TRIP(result)->location = _trip->location;
DIVE_TRIP(result)->location = dive_trip->location;
*trip = DIVE_TRIP(result);
} else {
dive_trip_list = g_list_insert_sorted(dive_trip_list, (_trip), dive_date_cmp);
dive_trip_list = g_list_insert_sorted(dive_trip_list, dive_trip, dive_date_cmp);
}
#ifdef DEBUG_TRIP
dump_trip_list();