X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9b643e82528c40e97610aaa87241f541830f4263..267d9c94a90a6180fb40c2d0fcdee42f7e5d083c:/src/surf/surf_routing.c diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index 55e773caf7..d9e2ee3a20 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -544,35 +544,28 @@ static void _get_route_and_latency(const char *src, const char *dst, xbt_assert((e_route_cnt->src_gateway == NULL) == (e_route_cnt->dst_gateway == NULL), - "bad gateway for route between \"%s\" and \"%s\"", src, dst); + "bad gateways for route from \"%s\" to \"%s\"", src, dst); *links = xbt_dynar_new(global_routing->size_of_link, NULL); - /* If source gateway is not our source, we have to recursively find our way up to this point */ - if (strcmp(src, e_route_cnt->src_gateway)) { - xbt_dynar_t route_src; - - _get_route_and_latency(src, e_route_cnt->src_gateway, - (links ? &route_src : NULL), - latency); + char*src_gateway = e_route_cnt->src_gateway; + char*dst_gateway = e_route_cnt->dst_gateway; - xbt_dynar_foreach(route_src, cpt, link) { - xbt_dynar_push(*links, &link); - } - xbt_dynar_free(&route_src); - } + /* If source gateway is not our source, we have to recursively find our way up to this point */ + if (strcmp(src, src_gateway)) + _get_route_and_latency(src, src_gateway, links,latency); xbt_dynar_foreach(e_route_cnt->link_list, cpt, link) { xbt_dynar_push(*links, &link); } /* If dest gateway is not our destination, we have to recursively find our way from this point */ - if (strcmp(e_route_cnt->dst_gateway, dst)) { + // FIXME why can't I factorize it the same way than [src;src_gw] without breaking the examples?? + if (strcmp(dst_gateway, dst)) { xbt_dynar_t route_dst; - _get_route_and_latency(e_route_cnt->dst_gateway, dst, - (links ? &route_dst : NULL), - latency); + _get_route_and_latency(dst_gateway, dst, + &route_dst, latency); xbt_dynar_foreach(route_dst, cpt, link) { xbt_dynar_push(*links, &link);