X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Ftrackiter.cpp;h=da949e75160351363b0ec2513deb81143a5ec6ea;hb=145ba6391812e2b1040a78a8f0fda5888bfea610;hp=31ebf08e1f1c59711208c0f51722480cbc529c46;hpb=ada37f44b9c44d726ecc3467ecdfdeb1c4137e44;p=r2c2.git diff --git a/source/libr2c2/trackiter.cpp b/source/libr2c2/trackiter.cpp index 31ebf08..da949e7 100644 --- a/source/libr2c2/trackiter.cpp +++ b/source/libr2c2/trackiter.cpp @@ -37,18 +37,20 @@ BlockIter TrackIter::block_iter() const 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) { last = rev; rev = rev.next(); - - // If we ran out of tracks, return an empty iterator - if(!rev) - return BlockIter(); } + // If we ran out of tracks, return an empty iterator + if(!rev) + return BlockIter(); + TrackIter fwd = last.reverse(); for(unsigned i=0; i