}
if (total_count == 0) {
+ xbt_free(disps);
return MPI_ERR_COUNT;
}
if (mpi_errno) return(mpi_errno);
}
-return MPI_SUCCESS;
+ xbt_free(disps);
+ xbt_free(tmp_recvbuf);
+
+ return MPI_SUCCESS;
}
tmp_buf0=( void *)xbt_malloc( true_extent * total_count);
tmp_buf1=( void *)xbt_malloc( true_extent * total_count);
+ void *tmp_buf0_save=tmp_buf0;
+ void *tmp_buf1_save=tmp_buf1;
+
/* adjust for potential negative lower bound in datatype */
tmp_buf0 = (void *)((char*)tmp_buf0 - true_lb);
tmp_buf1 = (void *)((char*)tmp_buf1 - true_lb);
result_ptr = (char *)(buf0_was_inout ? tmp_buf0 : tmp_buf1) + recv_offset * true_extent;
mpi_errno = smpi_datatype_copy(result_ptr, size, datatype,
recvbuf, size, datatype);
+ xbt_free(tmp_buf0_save);
+ xbt_free(tmp_buf1_save);
if (mpi_errno) return(mpi_errno);
return MPI_SUCCESS;
}
int mask, dst_tree_root, my_tree_root, j, k;
int received;
MPI_Datatype sendtype, recvtype;
- int nprocs_completed, tmp_mask, tree_root, is_commutative;
+ int nprocs_completed, tmp_mask, tree_root, is_commutative=0;
comm_size = smpi_comm_size(comm);
rank = smpi_comm_rank(comm);
}
}
- //smpi_datatype_free(&sendtype);
- //smpi_datatype_free(&recvtype);
+ smpi_datatype_free(&sendtype);
+ smpi_datatype_free(&recvtype);
mask <<= 1;
i++;
recvcounts[rank], datatype, recvbuf,
recvcounts[rank], datatype);
if (mpi_errno) return(mpi_errno);
+
xbt_free(disps);
xbt_free(tmp_recvbuf);
xbt_free(tmp_results);