Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Interface revolution: do not try to survive to malloc failure
[simgrid.git] / src / xbt / sysdep.c
index 2ac0871..2575bf9 100644 (file)
@@ -21,10 +21,14 @@ GRAS_LOG_NEW_DEFAULT_SUBCATEGORY(sysdep, gros, "System dependency");
  ****/
 
 void* gras_malloc  (long int bytes) {
-   return bytes == 0 ? NULL : (void*) malloc ((size_t) bytes);
+   void *ptr = (bytes == 0 ? NULL : (void*) malloc ((size_t) bytes));
+   gras_assert1(ptr, "Malloc of %ld bytes failed",bytes);
+   return ptr;
 }
 void* gras_malloc0 (long int bytes) {
-   return bytes == 0 ? NULL : (void*) calloc ((size_t) bytes, 1);
+   void *ptr = (bytes == 0 ? NULL : (void*) calloc ((size_t) bytes, 1));
+   gras_assert1(ptr, "Malloc of %ld bytes failed",bytes);
+   return ptr;
 }
 
 void* gras_realloc (void  *memory, long int bytes) {
@@ -32,14 +36,20 @@ void* gras_realloc (void  *memory, long int bytes) {
       gras_free(memory);
       return NULL;
    } else {
-      return (void*) realloc (memory, (size_t) bytes);
+      void *ptr = (void*) realloc (memory, (size_t) bytes);
+      gras_assert1(ptr, "Realloc of %ld bytes failed",bytes);
+      return ptr;
    }
 }
+char* gras_strdup  (const char* str) {
+   char *ret = (char*)strdup(str);
+   gras_assert0(ret, "String duplication failed");
+   return ret;
+}
 
 void  gras_free (void  *memory) {
-   if (memory) {
-      free (memory);
-   }
+   if (memory)
+     free (memory);
 }
 
 /****