Fix:core:Added NULL check in tracking_angle_delta. Additionally added
authorakashihi <akashihi@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Mon, 28 Jun 2010 13:17:50 +0000 (13:17 +0000)
committerakashihi <akashihi@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Mon, 28 Jun 2010 13:17:50 +0000 (13:17 +0000)
new fallback behaviour for profile setting. Ticket #593

git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@3434 ffa7fe5e-494d-0410-b361-a75ebd5db220

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

index 108df2f..95f987a 100644 (file)
@@ -2099,7 +2099,17 @@ navit_set_vehicle(struct navit *this_, struct navit_vehicle *nv)
                if (navit_set_vehicleprofile(this_, attr.u.str))
                        return;
        }
-       navit_set_vehicleprofile(this_,"car");
+       if (!navit_set_vehicleprofile(this_,"car")) {
+               /* We do not have a fallback "car" profile
+               * so lets set any profile */
+               GList *l;
+               l=this_->vehicleprofiles;
+               if (l) {
+                   this_->vehicleprofile=l->data;
+                   if (this_->route)
+                       route_set_profile(this_->route, this_->vehicleprofile);
+               }
+       }
 }
 
 /**
index c3fffef..32d26ed 100644 (file)
@@ -518,10 +518,13 @@ tracking_angle_abs_diff(int a1, int a2, int full)
 static int
 tracking_angle_delta(struct tracking *tr, int vehicle_angle, int street_angle, int flags)
 {
-       int full=180,ret=360,fwd,rev;
+       int full=180,ret=360,fwd=0,rev=0;
        struct vehicleprofile *profile=tr->vehicleprofile;
-       fwd=((flags & profile->flags_forward_mask) == profile->flags);
-       rev=((flags & profile->flags_reverse_mask) == profile->flags);
+       
+       if (profile) {
+           fwd=((flags & profile->flags_forward_mask) == profile->flags);
+           rev=((flags & profile->flags_reverse_mask) == profile->flags);
+       }
        if (fwd || rev) {
                if (!fwd || !rev) {
                        full=360;