Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix Memleaks
[simgrid.git] / src / surf / surf_routing.cpp
index 1d6035e..cb3672c 100644 (file)
@@ -397,7 +397,7 @@ void routing_AS_begin(sg_platf_AS_cbarg_t AS)
 
   info->p_rcComponent = new_as->p_routingFather;
   info->p_rcType = SURF_NETWORK_ELEMENT_AS;
-  info->p_name = new_as->p_name;
+  info->p_name = xbt_strdup(new_as->p_name);
 
   xbt_lib_set(as_router_lib, info->p_name, ROUTING_ASR_LEVEL,
               (void *) info);
@@ -420,7 +420,7 @@ void routing_AS_begin(sg_platf_AS_cbarg_t AS)
  * even if you add stuff to a closed AS
  *
  */
-void routing_AS_end(sg_platf_AS_cbarg_t AS)
+void routing_AS_end(sg_platf_AS_cbarg_t /*AS*/)
 {
 
   if (current_routing == NULL) {
@@ -542,7 +542,7 @@ static void _get_route_and_latency(RoutingEdgePtr src, RoutingEdgePtr dst,
   /* Common ancestor is kind enough to declare a bypass route from src to dst -- use it and bail out */
   if (e_route_bypass) {
     xbt_dynar_merge(links, &e_route_bypass->link_list);
-    //FIXME:generic_free_route(e_route_bypass);
+    generic_free_route(e_route_bypass);
     return;
   }
 
@@ -1263,11 +1263,13 @@ static void finalize_rec(AsPtr as) {
 
 /** \brief Frees all memory allocated by the routing module */
 void routing_exit(void) {
-  if (!routing_platf)
-    return;
-  xbt_dynar_free(&routing_platf->p_lastRoute);
-  finalize_rec(routing_platf->p_root);
-  xbt_free(routing_platf);
+  delete routing_platf;
+}
+
+RoutingPlatf::~RoutingPlatf()
+{
+       xbt_dynar_free(&p_lastRoute);
+       finalize_rec(p_root);
 }
 
 AS_t surf_AS_get_routing_root() {