Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
attempt to get rid of all const_cast (take 2)
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 18 May 2017 16:04:26 +0000 (18:04 +0200)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 18 May 2017 16:04:26 +0000 (18:04 +0200)
include/xbt/functional.hpp
src/smpi/smpi_global.cpp

index 2c7c87d..10c16bf 100644 (file)
@@ -39,11 +39,12 @@ public:
   {}
   void operator()() const
   {
   {}
   void operator()() const
   {
+    char noarg[] = {'\0'};
     const int argc = args_->size();
     std::vector<std::string> args = *args_;
     std::unique_ptr<char*[]> argv(new char*[argc + 1]);
     for (int i = 0; i != argc; ++i)
     const int argc = args_->size();
     std::vector<std::string> args = *args_;
     std::unique_ptr<char*[]> argv(new char*[argc + 1]);
     for (int i = 0; i != argc; ++i)
-      argv[i] = args[i].empty() ? '\0' : &args[i].front();
+      argv[i] = args[i].empty() ? noarg : &args[i].front();
     argv[argc] = nullptr;
     code_(argc, argv.get());
   }
     argv[argc] = nullptr;
     code_(argc, argv.get());
   }
index 63f2a6c..ff2da6f 100644 (file)
@@ -489,10 +489,11 @@ typedef void (*smpi_fortran_entry_point_type)();
 
 static int smpi_run_entry_point(smpi_entry_point_type entry_point, std::vector<std::string> args)
 {
 
 static int smpi_run_entry_point(smpi_entry_point_type entry_point, std::vector<std::string> args)
 {
+  char noarg[]   = {'\0'};
   const int argc = args.size();
   std::unique_ptr<char*[]> argv(new char*[argc + 1]);
   for (int i = 0; i != argc; ++i)
   const int argc = args.size();
   std::unique_ptr<char*[]> argv(new char*[argc + 1]);
   for (int i = 0; i != argc; ++i)
-    argv[i] = args[i].empty() ? '\0' : &args[i].front();
+    argv[i] = args[i].empty() ? noarg : &args[i].front();
   argv[argc] = nullptr;
 
   int res = entry_point(argc, argv.get());
   argv[argc] = nullptr;
 
   int res = entry_point(argc, argv.get());