summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2012-11-25 16:51:55 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2012-11-26 09:26:57 -0800
commit2f82ec39b89b782d1aeb2433a44d102fed5af7de (patch)
tree6823dc1ec337c3483bd3c7e16152c620f11dbd92
parent61e040898b7b86fec86379f6975a371f1cd7b0f8 (diff)
downloadsubsurface-2f82ec39b89b782d1aeb2433a44d102fed5af7de.tar.gz
Fix dive trip selection for merging
When picking the "better" trip, we stupidly looked not at the trip location, but at the _dive_ location. Which obviously didn't actually pick the "better" trip information at all, since it never actually looked at the trip itself. Oops. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--dive.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/dive.c b/dive.c
index 72794f960..af14f0fb8 100644
--- a/dive.c
+++ b/dive.c
@@ -847,6 +847,8 @@ static void pick_trip(struct dive *res, struct dive *pick)
*/
static void merge_trip(struct dive *res, struct dive *a, struct dive *b)
{
+ dive_trip_t *atrip, *btrip;
+
/*
* The larger tripflag is more relevant: we prefer
* take manually assigned trips over auto-generated
@@ -858,17 +860,20 @@ static void merge_trip(struct dive *res, struct dive *a, struct dive *b)
if (a->tripflag < b->tripflag)
goto pick_b;
- /*
- * Ok, so the divetrips are equally "important".
- * Pick the one with the better description.
- */
- if (!a->location)
+ /* Otherwise, look at the trip data and pick the "better" one */
+ atrip = a->divetrip;
+ btrip = b->divetrip;
+ if (!atrip)
+ goto pick_b;
+ if (!btrip)
+ goto pick_a;
+ if (!atrip->location)
goto pick_b;
- if (!b->location)
+ if (!btrip->location)
goto pick_a;
- if (!a->notes)
+ if (!atrip->notes)
goto pick_b;
- if (!b->notes)
+ if (!btrip->notes)
goto pick_a;
/*