Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix strdup/_strdup detection
[simgrid.git] / include / xbt / sysdep.h
index 33b10eb..f464edd 100644 (file)
@@ -74,7 +74,11 @@ char *xbt_strdup(const char *s)
 {
   char *res = NULL;
   if (s) {
+# if !defined(_XBT_WIN32)
     res = strdup(s);
+# else
+    res = _strdup(s);
+# endif
     if (!res)
       xbt_die("memory allocation error (strdup returned NULL)");
   }
@@ -134,7 +138,11 @@ void *xbt_realloc(void *p, size_t s)
   return res;
 }
 #else                           /* non __GNUC__  */
-#  define xbt_strdup(s)    strdup(s)
+#  if !defined(_XBT_WIN32)
+#    define xbt_strdup(s)    strdup(s)
+#  else
+#    define xbt_strdup(s)    _strdup(s)
+#  endif
 #  define xbt_malloc(n)    malloc(n)
 #  define xbt_malloc0(n)   calloc(n,1)
 #  define xbt_realloc(p,s) realloc(p,s)
@@ -142,7 +150,7 @@ 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(p) free(p) /*nothing specific to do here. A poor valgrind replacement? */
 
 /** @brief like free, but you can be sure that it is a function  */
 XBT_PUBLIC(void) xbt_free_f(void *p);