summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2008-12-19 22:41:57 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2008-12-19 22:41:57 +0000
commit16d5688a6ee49641807e656e09ab5ae7f59d9a80 (patch)
tree5eb19a52c24c3a2f1d36dd8db46ba4a71b5d8397
parentb7fdee7ebadb65929d82c1d7bbc8f6273ee0e0fc (diff)
downloadnavit-16d5688a6ee49641807e656e09ab5ae7f59d9a80.tar.gz
Fix:Avoid crashing if tracking hasn't got a street
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@1841 ffa7fe5e-494d-0410-b361-a75ebd5db220
-rw-r--r--navit/route.c5
-rw-r--r--navit/track.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/navit/route.c b/navit/route.c
index 36634f876..ef281b001 100644
--- a/navit/route.c
+++ b/navit/route.c
@@ -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);
diff --git a/navit/track.c b/navit/track.c
index 645ebeef9..a5ae42c36 100644
--- a/navit/track.c
+++ b/navit/track.c
@@ -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