]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/train.cpp
Ignore dubious speed measurements when finding speed step
[r2c2.git] / source / libr2c2 / train.cpp
index b2b4899f9aa6eb7cc1ad83cee23039d073c4b5f4..218b6861da183b0d24c3279046c4dc122aaae9ba 100644 (file)
@@ -1180,10 +1180,10 @@ unsigned Train::find_speed_step(float real) const
                if(real_speed[i].weight)
                {
                        last = i;
-                       if(real_speed[i].speed<real)
-                               low = i;
-                       else
+                       if(real_speed[i].speed>=real)
                                high = i;
+                       else if(real_speed[i].speed>real_speed[low].speed)
+                               low = i;
                }
        if(!high)
        {
@@ -1294,7 +1294,7 @@ bool Train::is_valid_diversion(const Route &diversion, const TrackIter &from)
 
                track1 = track1.next(path);
 
-               if(track1.looped())
+               if(!track1 || track1.looped())
                        return false;
        }
 
@@ -1312,6 +1312,8 @@ bool Train::is_valid_diversion(const Route &diversion, const TrackIter &from)
                bool ok = (track2!=from && diversion.has_track(*track2));
 
                track2 = track2.next(path);
+               if(!track2)
+                       return false;
 
                if(ok)
                        break;