if(!_track->get_type().is_turnout())
{
- TrackIter rev = reverse();
+ /* Since there was no endpoint match, the preceding track can't be in a
+ different block. */
+ TrackIter rev = flip();
TrackIter last;
while(rev && &rev.track()->get_block()==&block)
{