Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Dig through git history, and update copyright lines.
[simgrid.git] / include / xbt / sysdep.h
index adc9022..8d3a61e 100644 (file)
@@ -2,7 +2,7 @@
 /*  no system header should be loaded out of this file so that we have only */
 /*  one file to check when porting to another OS                            */
 
-/* Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010. The SimGrid Team.
+/* Copyright (c) 2004-2012. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
 #ifndef _XBT_SYSDEP_H
 #define _XBT_SYSDEP_H
 
-#include <string.h>
-#include <stdlib.h>
-#include <stdarg.h>             /* va_list */
-
 #include "xbt/log.h"
 #include "xbt/misc.h"
 #include "xbt/asserts.h"
 
 #include "simgrid_config.h"
 
+#include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>             /* va_list */
+
 SG_BEGIN_DECL()
 
 /* They live in asserts.h, but need to be declared before this module.
@@ -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);