X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/392a563ed3be3ffdaaefbdad8c779f360b30fcda..6f96af1403cf082547c5a77abaf61d1ceddf3057:/src/surf/surf_routing.c diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index 5270da88b0..96d36345c7 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -504,8 +504,6 @@ static void elements_father(const char *src, const char *dst, static void _get_route_and_latency(const char *src, const char *dst, xbt_dynar_t * links, double *latency) { - void *link; - unsigned int cpt; s_route_t route; memset(&route,0,sizeof(route)); @@ -540,10 +538,7 @@ static void _get_route_and_latency(const char *src, const char *dst, // // FIXME this path is never tested. I need examples to check the bypass mechanism... // THROW_UNIMPLEMENTED; // let's warn the users of the problem - xbt_dynar_foreach(e_route_bypass->link_list, cpt, link) { - xbt_dynar_push(*links, &link); - } - + xbt_dynar_merge(links,&(e_route_bypass->link_list)); generic_free_route(e_route_bypass); return; } @@ -564,21 +559,12 @@ static void _get_route_and_latency(const char *src, const char *dst, if (strcmp(src, src_gateway)) _get_route_and_latency(src, src_gateway, links, latency); - xbt_dynar_foreach(route.link_list, cpt, link) { - xbt_dynar_push(*links, &link); - } + xbt_dynar_merge(links,&(route.link_list)); /* If dest gateway is not our destination, we have to recursively find our way from this point */ // 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 = xbt_dynar_new(global_routing->size_of_link,NULL); - - _get_route_and_latency(dst_gateway, dst, &route_dst, latency); - - xbt_dynar_foreach(route_dst, cpt, link) { - xbt_dynar_push(*links, &link); - } - xbt_dynar_free(&route_dst); + _get_route_and_latency(dst_gateway, dst, links, latency); } xbt_free(src_gateway); @@ -619,25 +605,18 @@ static xbt_dynar_t recursive_get_onelink_routes(AS_t rc) xbt_dynar_t ret = xbt_dynar_new(sizeof(onelink_t), xbt_free); //adding my one link routes - unsigned int cpt; - void *link; xbt_dynar_t onelink_mine = rc->get_onelink_routes(rc); - if (onelink_mine) { - xbt_dynar_foreach(onelink_mine, cpt, link) { - xbt_dynar_push(ret, &link); - } - } + if (onelink_mine) + xbt_dynar_merge(&ret,&onelink_mine); + //recursing char *key; xbt_dict_cursor_t cursor = NULL; AS_t rc_child; xbt_dict_foreach(rc->routing_sons, cursor, key, rc_child) { xbt_dynar_t onelink_child = recursive_get_onelink_routes(rc_child); - if (onelink_child) { - xbt_dynar_foreach(onelink_child, cpt, link) { - xbt_dynar_push(ret, &link); - } - } + if (onelink_child) + xbt_dynar_merge(&ret,&onelink_child); } return ret; }