- const Block::Endpoint &ep = next.block->get_endpoints()[next.entry];
- if(!r->get_tracks().count(ep.track))
- routes.push_front(Route::find(*ep.track, ep.track_ep, *r));
-
- /* XXX This is sort of a hack, but it keeps divert() happy. Need to come
- up with a better solution when there is time. */
- routes.push_front(create_lead_route());
+ const Block::Endpoint &first_ep = first.block->get_endpoints()[first.entry];
+ const Block::Endpoint &next_ep = next.block->get_endpoints()[next.entry];
+ if(!r->get_tracks().count(next_ep.track))
+ {
+ Route *lead = Route::find(*next_ep.track, next_ep.track_ep, *r);
+ create_lead_route(lead, lead);
+ routes.push_front(lead);
+ }
+ else if(!r->get_tracks().count(first_ep.track))
+ routes.push_front(create_lead_route(0, r));