Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Ensure that the dict subsystem is initialized when creating a dict
authorGabriel Corona <gabriel.corona@loria.fr>
Fri, 29 Apr 2016 08:47:46 +0000 (10:47 +0200)
committerGabriel Corona <gabriel.corona@loria.fr>
Fri, 29 Apr 2016 08:47:46 +0000 (10:47 +0200)
src/xbt/dict.c

index 59927b7..6e2135d 100644 (file)
@@ -44,6 +44,9 @@ xbt_dict_t xbt_dict_new(void)
  */
 xbt_dict_t xbt_dict_new_homogeneous(void_f_pvoid_t free_ctn)
 {
+  if (dict_elm_mallocator == NULL)
+    xbt_dict_preinit();
+
   xbt_dict_t dict;
 
   dict = xbt_new(s_xbt_dict_t, 1);
@@ -527,10 +530,14 @@ void xbt_dict_dump_sizes(xbt_dict_t dict)
  */
 void xbt_dict_preinit(void)
 {
-  dict_elm_mallocator = xbt_mallocator_new(256, dict_elm_mallocator_new_f, dict_elm_mallocator_free_f,
-                                           dict_elm_mallocator_reset_f);
-  dict_het_elm_mallocator = xbt_mallocator_new(256, dict_het_elm_mallocator_new_f, dict_het_elm_mallocator_free_f,
-                                               dict_het_elm_mallocator_reset_f);
+  if (dict_elm_mallocator == NULL)
+    dict_elm_mallocator = xbt_mallocator_new(
+      256, dict_elm_mallocator_new_f, dict_elm_mallocator_free_f,
+      dict_elm_mallocator_reset_f);
+  if (dict_het_elm_mallocator == NULL)
+    dict_het_elm_mallocator = xbt_mallocator_new(
+      256, dict_het_elm_mallocator_new_f, dict_het_elm_mallocator_free_f,
+      dict_het_elm_mallocator_reset_f);
 }
 
 /**