Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use std::fill instead of memset.
[simgrid.git] / src / xbt / xbt_log_appender_file.cpp
index 8247d29..02df6f5 100644 (file)
@@ -1,6 +1,6 @@
 /* file_appender - a dumb log appender which simply prints to a file        */
 
-/* Copyright (c) 2007-2021. The SimGrid Team.
+/* Copyright (c) 2007-2022. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -70,17 +70,12 @@ static void open_append2_file(xbt_log_append2_file_t data){
     //Split
     if(data->file)
       fclose(data->file);
-    char* pre=xbt_strdup(data->filename);
-    char* sep=strchr(pre,'%');
-    if (not sep)
-      sep=pre+strlen(pre);
-    const char* post    = sep + 1;
-    *sep                = '\0';
-    std::string newname = pre + std::to_string(data->count) + post;
+    std::string newname = data->filename;
+    size_t sep          = std::min(newname.find_first_of('%'), newname.size());
+    newname.replace(sep, 1, std::to_string(data->count));
     data->count++;
     data->file = fopen(newname.c_str(), "w");
     xbt_assert(data->file != nullptr, "Cannot open file: %s: %s", newname.c_str(), strerror(errno));
-    xbt_free(pre);
   }
 }