Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Call __gcov_flush() on abort so that gcda files are correctly written.
[simgrid.git] / include / xbt / sysdep.h
index adc9022..4bc927c 100644 (file)
@@ -31,7 +31,17 @@ SG_BEGIN_DECL()
  * @{
  */
 /** @brief Kill the program in silence */
+#ifdef COVERAGE
+/* Call __gcov_flush on abort when compiling with coverage options. */
+#define xbt_abort()                             \
+  do {                                          \
+    extern void __gcov_flush(void);             \
+    __gcov_flush();                             \
+    abort();                                    \
+  } while (0)
+#else
 #define xbt_abort() abort()
+#endif
 
 /**
  * @brief Kill the program with an error message
@@ -128,9 +138,7 @@ void *xbt_realloc(void *p, size_t s)
       res = xbt_malloc(s);
     }
   } else {
-    if (p) {
-      free(p);
-    }
+    free(p);
   }
   return res;
 }
@@ -144,7 +152,6 @@ void *xbt_realloc(void *p, size_t s)
 /** @brief like free
     @hideinitializer */
 #define xbt_free free           /*nothing specific to do here. A poor valgrind replacement? */
-/*#define xbt_free_fct free * replacement with the guareenty of being a function  FIXME:KILLME*/
 
 /** @brief like free, but you can be sure that it is a function  */
 XBT_PUBLIC(void) xbt_free_f(void *p);