Fix:Avoid crashing if tracking hasn't got a street
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Fri, 19 Dec 2008 22:41:57 +0000 (22:41 +0000)
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Fri, 19 Dec 2008 22:41:57 +0000 (22:41 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@1841 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/navit/route.c
navit/navit/track.c

index 36634f8..ef281b0 100644 (file)
@@ -679,6 +679,7 @@ route_set_position_from_tracking(struct route *this, struct tracking *tracking)
 {
        struct pcoord *c;
        struct route_info *ret;
+       struct street_data *sd;
 
        dbg(2,"enter\n");
        c=tracking_get_pos(tracking);
@@ -695,7 +696,9 @@ route_set_position_from_tracking(struct route *this, struct tracking *tracking)
        ret->lp.x=c->x;
        ret->lp.y=c->y;
        ret->pos=tracking_get_segment_pos(tracking);
-       ret->street=street_data_dup(tracking_get_street_data(tracking));
+       sd=tracking_get_street_data(tracking);
+       if (sd)
+               ret->street=street_data_dup(sd);
        route_info_distances(ret, c->pro);
        dbg(3,"c->x=0x%x, c->y=0x%x pos=%d item=(0x%x,0x%x)\n", c->x, c->y, ret->pos, ret->street->item.id_hi, ret->street->item.id_lo);
        dbg(3,"street 0=(0x%x,0x%x) %d=(0x%x,0x%x)\n", ret->street->c[0].x, ret->street->c[0].y, ret->street->count-1, ret->street->c[ret->street->count-1].x, ret->street->c[ret->street->count-1].y);
index 645ebee..a5ae42c 100644 (file)
@@ -91,7 +91,9 @@ tracking_get_segment_pos(struct tracking *tr)
 struct street_data *
 tracking_get_street_data(struct tracking *tr)
 {
-       return tr->curr_line->street;
+       if (tr->curr_line)
+               return tr->curr_line->street;
+       return NULL;
 }
 
 int