X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/7432fddfbf2b5e1a654477c664998674d53003e8..700b0908d71f64c9449ba372d0b9a8363257afb1:/src/viktrack.c diff --git a/src/viktrack.c b/src/viktrack.c index b5f1b768..dc87516f 100644 --- a/src/viktrack.c +++ b/src/viktrack.c @@ -552,10 +552,12 @@ gdouble *vik_track_make_speed_map ( const VikTrack *tr, guint16 num_chunks ) g_assert ( num_chunks < 16000 ); +#ifdef XXXXXXXXXXXXXXXXXX iter = tr->trackpoints; while (iter) { } +#endif /*XXXXXXXXXXXXXXXXXX*/ t1 = VIK_TRACKPOINT(tr->trackpoints->data)->timestamp; t2 = VIK_TRACKPOINT(g_list_last(tr->trackpoints)->data)->timestamp; @@ -631,15 +633,15 @@ gdouble *vik_track_make_speed_map ( const VikTrack *tr, guint16 num_chunks ) } /* by Alex Foobarian */ -VikCoord *vik_track_get_closest_tp_by_percentage_dist ( VikTrack *tr, gdouble reldist ) +VikTrackpoint *vik_track_get_closest_tp_by_percentage_dist ( VikTrack *tr, gdouble reldist ) { gdouble dist = vik_track_get_length_including_gaps(tr) * reldist; gdouble current_dist = 0.0; gdouble current_inc = 0.0; - VikCoord *rv; if ( tr->trackpoints ) { GList *iter = tr->trackpoints->next; + GList *last_iter = NULL; while (iter) { current_inc = vik_coord_diff ( &(VIK_TRACKPOINT(iter->data)->coord), @@ -647,19 +649,17 @@ VikCoord *vik_track_get_closest_tp_by_percentage_dist ( VikTrack *tr, gdouble re current_dist += current_inc; if ( current_dist >= dist ) break; + last_iter = iter; iter = iter->next; } + if (!iter) /* passing the end the track */ + return (last_iter ? last_iter->data : NULL); /* we've gone past the dist already, was prev trackpoint closer? */ /* should do a vik_coord_average_weighted() thingy. */ if ( iter->prev && abs(current_dist-current_inc-dist) < abs(current_dist-dist) ) iter = iter->prev; - - - rv = g_malloc(sizeof(VikCoord)); - *rv = VIK_TRACKPOINT(iter->data)->coord; - - return rv; + return VIK_TRACKPOINT(iter->data); } return NULL;