Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
sonar: ignore coverage on XML files (and some others)
[simgrid.git] / src / kernel / routing / TorusZone.cpp
index f632e6e..8eda96a 100644 (file)
@@ -12,11 +12,11 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route_cluster_torus, surf_route_cluster, "T
 inline unsigned int* rankId_to_coords(int rankId, xbt_dynar_t dimensions)
 {
 
-  unsigned int cur_dim_size = 1;
+  unsigned int cur_dim_size;
   unsigned int dim_size_product = 1;
-  unsigned int* coords = (unsigned int*)malloc(xbt_dynar_length(dimensions) * sizeof(unsigned int));
-  for (unsigned int i = 0; i < xbt_dynar_length(dimensions); i++) {
-    cur_dim_size = xbt_dynar_get_as(dimensions, i, int);
+  unsigned int* coords =  new unsigned int[xbt_dynar_length(dimensions)];
+  unsigned int i;
+  xbt_dynar_foreach(dimensions,i, cur_dim_size) {
     coords[i]    = (rankId / dim_size_product) % cur_dim_size;
     dim_size_product *= cur_dim_size;
   }
@@ -48,8 +48,7 @@ void TorusZone::create_links_for_node(sg_platf_cluster_cbarg_t cluster, int id,
   int dim_product = 1; // Needed to calculate the next neighbor_id
   for (unsigned int j = 0; j < xbt_dynar_length(dimensions_); j++) {
 
-    s_sg_platf_link_cbarg_t link;
-    memset(&link, 0, sizeof(link));
+    LinkCreationArgs link;
     current_dimension = xbt_dynar_get_as(dimensions_, j, int);
     neighbor_rank_id  = ((static_cast<int>(rank) / dim_product) % current_dimension == current_dimension - 1)
                            ? rank - (current_dimension - 1) * dim_product
@@ -222,8 +221,8 @@ void TorusZone::getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_cbarg
     current_node = next_node;
     next_node    = 0;
   }
-  free(myCoords);
-  free(targetCoords);
+  delete[] myCoords;
+  delete[] targetCoords;
 }
 }
 }