From c2bc6633ec19255aa5c083662f361250a3657b79 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Mon, 7 Jan 2013 14:12:07 -0800 Subject: Improve dive trip sort comparison function We do want to compare "loose" dives too, but we need to be a bit careful, and always use the trip date as the primary sort key for any dives that are not in the same trip. Reported-and-tested-by: Miika Turkia Signed-off-by: Linus Torvalds Signed-off-by: Dirk Hohndel --- divelist.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/divelist.c b/divelist.c index 6397f62fd..6b09b7d3d 100644 --- a/divelist.c +++ b/divelist.c @@ -1461,15 +1461,18 @@ static gint dive_nr_sort(GtkTreeModel *model, tripb = b->divetrip; } - if (!tripa || !tripb) - return 0; - if (tripa->when < tripb->when) - return -1; - if (tripa->when > tripb->when) - return 1; - if (a && b) - return a->when - b->when; - return 0; + /* + * Compare dive dates within the same trip (or when there + * are no trips involved at all). But if we have two + * different trips use the trip dates for comparison + */ + if (tripa != tripb) { + if (tripa) + when_a = tripa->when; + if (tripb) + when_b = tripb->when; + } + return when_a - when_b; } -- cgit v1.2.3-70-g09d2