From: Martin Quinson Date: Tue, 8 Nov 2011 13:22:01 +0000 (+0100) Subject: plug a memleak when the cluster's router_id is not given X-Git-Tag: exp_20120216~430 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/d9c234050c6ba72ff2520ac9c57c11468bd30395 plug a memleak when the cluster's router_id is not given --- diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index fc81aaed1d..0df09898b9 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -1611,13 +1611,19 @@ void routing_parse_Scluster(void) } xbt_dynar_free(&radical_elements); - //Make the router + // Add a router. It is magically used thanks to the way in which surf_routing_cluster is written, and it's very useful to connect clusters together XBT_DEBUG(" "); XBT_DEBUG("", struct_cluster->router_id); - SURFXML_BUFFER_SET(router_id, struct_cluster->router_id); - SURFXML_BUFFER_SET(router_coordinates, ""); - SURFXML_START_TAG(router); - SURFXML_END_TAG(router); + s_sg_platf_router_cbarg_t router; + char *newid=NULL; + memset(&router,0,sizeof(router)); + router.id = struct_cluster->router_id; + router.coord = ""; + if (!router.id || !strcmp(router.id,"")) + router.id = newid = bprintf("%s%s_router%s", struct_cluster->prefix, struct_cluster->id, struct_cluster->suffix); + sg_platf_new_router(&router); + if (newid) + free(newid); //Make the backbone if( (struct_cluster->bb_bw!= 0) && (struct_cluster->bb_lat!=0) ){ @@ -1642,7 +1648,7 @@ void routing_parse_Scluster(void) } sg_platf_new_link(&link); - ETag_surfxml_link(); + ETag_surfxml_link();//FIXME: killme surf_parsing_link_up_down_t info = xbt_new0(s_surf_parsing_link_up_down_t, 1); info->link_up = xbt_lib_get_or_null(link_lib, link_backbone, SURF_LINK_LEVEL); diff --git a/src/surf/surfxml_parse.c b/src/surf/surfxml_parse.c index 950173c99b..915dfd78c3 100644 --- a/src/surf/surfxml_parse.c +++ b/src/surf/surfxml_parse.c @@ -321,13 +321,7 @@ void STag_surfxml_cluster(void){ struct_cluster->bb_bw = surf_parse_get_double(A_surfxml_cluster_bb_bw); if(strcmp(A_surfxml_cluster_bb_lat,"")) struct_cluster->bb_lat = surf_parse_get_double(A_surfxml_cluster_bb_lat); - if(!strcmp(A_surfxml_cluster_router_id,"")) - struct_cluster->router_id = bprintf("%s%s_router%s", - struct_cluster->prefix, - struct_cluster->id, - struct_cluster->suffix); - else - struct_cluster->router_id = A_surfxml_cluster_router_id; + struct_cluster->router_id = A_surfxml_cluster_router_id; struct_cluster->sharing_policy = AX_surfxml_cluster_sharing_policy; struct_cluster->bb_sharing_policy = AX_surfxml_cluster_bb_sharing_policy;