}
char *tmp_buf;
- tmp_buf = (char *) xbt_malloc(count * extent);
+ tmp_buf = (char *) smpi_get_tmp_sendbuffer(count * extent);
smpi_mpi_sendrecv(buf, count, datatype, rank, tag, rbuf, count, datatype, rank,
tag, comm, &status);
to = header_buf[myordering + 1];
}
from = header_buf[myordering - 1];
- smpi_mpi_recv(tmp_buf, count, datatype, header_buf[myordering - 1], tag,
- comm, &status);
+ smpi_mpi_recv(tmp_buf, count, datatype, from, tag, comm, &status);
smpi_op_apply(op, tmp_buf, rbuf, &count, &datatype);
smpi_mpi_send(rbuf, count, datatype, to, tag, comm);
}
comm);
}
- free(tmp_buf);
+ smpi_free_tmp_buffer(tmp_buf);
return MPI_SUCCESS;
}