Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
plug a huge memleak that I created while optimizing for speed
authorMartin Quinson <martin.quinson@loria.fr>
Thu, 2 Feb 2017 14:26:42 +0000 (15:26 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Thu, 2 Feb 2017 14:26:42 +0000 (15:26 +0100)
include/xbt/dynar.h
sonar-project.properties
src/smpi/smpi_base.cpp
src/xbt/dynar.cpp

index d9796b5..9be1816 100644 (file)
@@ -70,6 +70,7 @@ XBT_PUBLIC(void) xbt_dynar_init(xbt_dynar_t dynar, const unsigned long elmsize,
 XBT_PUBLIC(void) xbt_dynar_free(xbt_dynar_t * dynar);
 XBT_PUBLIC(void) xbt_dynar_free_voidp(void *dynar);
 XBT_PUBLIC(void) xbt_dynar_free_container(xbt_dynar_t * dynar);
+XBT_PUBLIC(void) xbt_dynar_free_data(xbt_dynar_t dynar);
 XBT_PUBLIC(void) xbt_dynar_shrink(xbt_dynar_t dynar, int empty_slots);
 XBT_PUBLIC(void) xbt_dynar_dump(xbt_dynar_t dynar);
 
index 8e42539..3e5b3d8 100644 (file)
@@ -3,7 +3,7 @@
 
 sonar.projectKey=simgrid
 sonar.projectName=SimGrid
-sonar.projectVersion=3.13.91
+sonar.projectVersion=3.15
 
 sonar.links.homepage=http://simgrid.org
 sonar.links.issue=https://github.com/simgrid/simgrid/issues
index 9bae432..ece561e 100644 (file)
@@ -877,6 +877,7 @@ int smpi_mpi_waitany(int count, MPI_Request requests[], MPI_Status * status)
         requests[index] = MPI_REQUEST_NULL;
       }
     }
+    xbt_dynar_free_data(&comms);
     xbt_free(map);
   }
 
index 8281480..e5c4072 100644 (file)
@@ -114,6 +114,14 @@ extern "C" void xbt_dynar_init(xbt_dynar_t dynar, const unsigned long elmsize, v
   dynar->free_f  = free_f;
 }
 
+/** @brief Destroy a dynar that was created with xbt_dynar_init */
+extern "C" void xbt_dynar_free_data(xbt_dynar_t dynar)
+{
+  xbt_dynar_reset(dynar);
+  if (dynar)
+    free(dynar->data);
+}
+
 /** @brief Destructor of the structure not touching to the content
  *
  * \param dynar poor victim