Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[SMPI] Replay: Fix datatype initialization
authorChristian Heinrich <franz-christian.heinrich@inria.fr>
Wed, 28 Mar 2018 19:53:50 +0000 (21:53 +0200)
committerChristian Heinrich <franz-christian.heinrich@inria.fr>
Wed, 28 Mar 2018 19:53:50 +0000 (21:53 +0200)
src/smpi/internals/smpi_replay.cpp

index e65846b..ab965b7 100644 (file)
@@ -235,20 +235,20 @@ public:
       if (action.size() > 3 + comm_size + comm_size) { /* datatype + disp are specified */
         datatype_index = 3 + comm_size;
         disp_index     = datatype_index + 1;
+        datatype1      = simgrid::smpi::Datatype::decode(action[datatype_index]);
+        datatype2      = simgrid::smpi::Datatype::decode(action[datatype_index]);
       } else if (action.size() > 3 + comm_size + 2) { /* disps specified; datatype is not specified; use the default one */
-        datatype_index = -1;
         disp_index     = 3 + comm_size;
       } else if (action.size() > 3 + comm_size)  { /* only datatype, no disp specified */
         datatype_index = 3 + comm_size;
+        datatype1      = simgrid::smpi::Datatype::decode(action[datatype_index]);
+        datatype2      = simgrid::smpi::Datatype::decode(action[datatype_index]);
       }
 
       if (disp_index != 0) {
         for (unsigned int i = 0; i < comm_size; i++)
           disps[i]          = std::stoi(action[disp_index + i]);
       }
-
-      datatype1 = simgrid::smpi::Datatype::decode(action[datatype_index]);
-      datatype2 = simgrid::smpi::Datatype::decode(action[datatype_index]);
     }
 
     for (unsigned int i = 0; i < comm_size; i++) {