X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3736e0252d96679e19cfbe41f3c09833d3734386..d569ce424f3d391953106a9aaf7fff31ab865912:/src/surf/surf_routing.c diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index 354272f590..38e071a983 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -588,13 +588,9 @@ static void _get_route_and_latency(const char *src, const char *dst, void routing_get_route_and_latency(const char *src, const char *dst, xbt_dynar_t * route, double *latency) { - static xbt_dynar_t last_route = NULL; - - int need_cleanup = !(*route); - - if (need_cleanup) { - xbt_dynar_free(&last_route); - last_route = *route = xbt_dynar_new(global_routing->size_of_link,NULL); + if (!*route) { + xbt_dynar_reset(global_routing->last_route); + *route = global_routing->last_route; } _get_route_and_latency(src, dst, route, latency); @@ -664,6 +660,7 @@ void routing_model_create(size_t size_of_links, void *loopback) global_routing->get_onelink_routes = get_onelink_routes; global_routing->loopback = loopback; global_routing->size_of_link = size_of_links; + global_routing->last_route = xbt_dynar_new(global_routing->size_of_link,NULL); /* no current routing at moment */ current_routing = NULL; } @@ -1147,6 +1144,7 @@ static void finalize_rec(AS_t as) { void routing_exit(void) { if (!global_routing) return; + xbt_dynar_free(&global_routing->last_route); finalize_rec(global_routing->root); xbt_free(global_routing); }