Fix the way arguments are being handled
[charm.git] / src / arch / mpi / machine.c
index e6c19ece5309e8351988bc5646e48ccaf19aa58a..a2f0f1ab83dfb15bfb57bb8d3b3db93c45d8c850 100644 (file)
@@ -1394,13 +1394,15 @@ void LrtsInit(int *argc, char ***argv, int *numNodes, int *myNodeID) {
 
     if (*myNodeID >= num_workpes) {    /* is spare processor */
       //if isomalloc_sync call mpi_barrier
-      if(CmiGetArgFlag(largv,"+isomalloc_sync")){
+      char **tempargv = CmiCopyArgs(largv);
+      if(CmiGetArgFlag(tempargv,"+isomalloc_sync")){
           MPI_Barrier(charmComm);
           MPI_Barrier(charmComm);
           MPI_Barrier(charmComm);
           MPI_Barrier(charmComm);
       }
-         MPI_Status sts;
+      free(tempargv);
+      MPI_Status sts;
       int vals[2];
       MPI_Recv(vals,2,MPI_INT,MPI_ANY_SOURCE,FAIL_TAG, charmComm,&sts);
       int newpe = vals[0];