Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Once again, use sd::array instead of C-style arrays.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 25 Nov 2020 15:09:07 +0000 (16:09 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 25 Nov 2020 16:07:33 +0000 (17:07 +0100)
src/mc/ModelChecker.cpp
src/mc/Session.cpp
src/mc/mc_global.cpp
src/mc/remote/AppSide.cpp

index 30e20e6..f461691 100644 (file)
@@ -14,6 +14,7 @@
 #include "xbt/automaton.hpp"
 #include "xbt/system_error.hpp"
 
+#include <array>
 #include <sys/ptrace.h>
 #include <sys/wait.h>
 
@@ -42,12 +43,12 @@ void ModelChecker::start()
   checker_side_.start([](evutil_socket_t sig, short events, void* arg) {
     auto mc = static_cast<simgrid::mc::ModelChecker*>(arg);
     if (events == EV_READ) {
-      char buffer[MC_MESSAGE_LENGTH];
-      ssize_t size = mc->checker_side_.get_channel().receive(buffer, sizeof(buffer), false);
+      std::array<char, MC_MESSAGE_LENGTH> buffer;
+      ssize_t size = mc->checker_side_.get_channel().receive(buffer.data(), buffer.size(), false);
       if (size == -1 && errno != EAGAIN)
         throw simgrid::xbt::errno_error();
 
-      if (not mc->handle_message(buffer, size))
+      if (not mc->handle_message(buffer.data(), size))
         mc->checker_side_.break_loop();
     } else if (events == EV_SIGNAL) {
       if (sig == SIGCHLD)
index f8d8819..fc286bd 100644 (file)
@@ -15,6 +15,7 @@
 #include "xbt/log.h"
 #include "xbt/system_error.hpp"
 
+#include <array>
 #include <memory>
 #include <string>
 
@@ -145,10 +146,10 @@ bool Session::actor_is_enabled(aid_t pid) const
 {
   s_mc_message_actor_enabled_t msg{MC_MESSAGE_ACTOR_ENABLED, pid};
   model_checker_->channel().send(msg);
-  char buff[MC_MESSAGE_LENGTH];
-  ssize_t received = model_checker_->channel().receive(buff, MC_MESSAGE_LENGTH, true);
+  std::array<char, MC_MESSAGE_LENGTH> buff;
+  ssize_t received = model_checker_->channel().receive(buff.data(), buff.size(), true);
   xbt_assert(received == sizeof(s_mc_message_int_t), "Unexpected size in answer to ACTOR_ENABLED");
-  return ((s_mc_message_int_t*)buff)->value;
+  return ((s_mc_message_int_t*)buff.data())->value;
 }
 
 simgrid::mc::Session* session;
index 219b913..e5107d9 100644 (file)
@@ -20,6 +20,7 @@
 #include "src/mc/sosp/Snapshot.hpp"
 #include "xbt/backtrace.hpp"
 
+#include <array>
 #include <libunwind.h>
 #endif
 
@@ -108,11 +109,11 @@ namespace mc {
 void dumpStack(FILE* file, unw_cursor_t* cursor)
 {
   int nframe = 0;
-  char buffer[100];
+  std::array<char, 100> buffer;
 
   unw_word_t off;
   do {
-    const char* name = not unw_get_proc_name(cursor, buffer, 100, &off) ? buffer : "?";
+    const char* name = not unw_get_proc_name(cursor, buffer.data(), buffer.size(), &off) ? buffer.data() : "?";
     // Unmangle C++ names:
     auto realname = simgrid::xbt::demangle(name);
 
index 6e08bdf..9a72d04 100644 (file)
@@ -112,12 +112,12 @@ void AppSide::handle_messages() const
   while (true) {
     XBT_DEBUG("Waiting messages from model-checker");
 
-    char message_buffer[MC_MESSAGE_LENGTH];
-    ssize_t received_size = channel_.receive(&message_buffer, sizeof(message_buffer));
+    std::array<char, MC_MESSAGE_LENGTH> message_buffer;
+    ssize_t received_size = channel_.receive(message_buffer.data(), message_buffer.size());
 
     xbt_assert(received_size >= 0, "Could not receive commands from the model-checker");
 
-    const s_mc_message_t* message = (s_mc_message_t*)message_buffer;
+    const s_mc_message_t* message = (s_mc_message_t*)message_buffer.data();
     switch (message->type) {
       case MC_MESSAGE_DEADLOCK_CHECK:
         assert_msg_size("DEADLOCK_CHECK", s_mc_message_t);
@@ -131,12 +131,12 @@ void AppSide::handle_messages() const
 
       case MC_MESSAGE_SIMCALL_HANDLE:
         assert_msg_size("SIMCALL_HANDLE", s_mc_message_simcall_handle_t);
-        handle_simcall((s_mc_message_simcall_handle_t*)message_buffer);
+        handle_simcall((s_mc_message_simcall_handle_t*)message_buffer.data());
         break;
 
       case MC_MESSAGE_ACTOR_ENABLED:
         assert_msg_size("ACTOR_ENABLED", s_mc_message_actor_enabled_t);
-        handle_actor_enabled((s_mc_message_actor_enabled_t*)message_buffer);
+        handle_actor_enabled((s_mc_message_actor_enabled_t*)message_buffer.data());
         break;
 
       default: