소스 검색

Make sure that the request structure is blanked before using it.

Cédric Augonnet 15 년 전
부모
커밋
df683b9ec6
1개의 변경된 파일11개의 추가작업 그리고 0개의 파일을 삭제
  1. 11 0
      mpi/starpu_mpi.c

+ 11 - 0
mpi/starpu_mpi.c

@@ -50,6 +50,8 @@ int starpu_mpi_isend(starpu_data_handle data_handle, struct starpu_mpi_req_s *re
 {
 	STARPU_ASSERT(req);
 
+	memset(req, 0, sizeof(struct starpu_mpi_req_s));
+
 	/* Initialize the request structure */
 	req->submitted = 0;
 	req->completed = 0;
@@ -104,6 +106,8 @@ int starpu_mpi_irecv(starpu_data_handle data_handle, struct starpu_mpi_req_s *re
 {
 	STARPU_ASSERT(req);
 
+	memset(req, 0, sizeof(struct starpu_mpi_req_s));
+
 	/* Initialize the request structure */
 	req->submitted = 0;
 	pthread_mutex_init(&req->req_mutex, NULL);
@@ -135,6 +139,8 @@ int starpu_mpi_recv(starpu_data_handle data_handle,
 {
 	struct starpu_mpi_req_s req;
 
+	memset(&req, 0, sizeof(struct starpu_mpi_req_s));
+
 	starpu_mpi_irecv(data_handle, &req, source, mpi_tag, comm);
 	starpu_mpi_wait(&req, status);
 
@@ -151,6 +157,9 @@ int starpu_mpi_send(starpu_data_handle data_handle,
 	struct starpu_mpi_req_s req;
 	MPI_Status status;
 
+	memset(&req, 0, sizeof(struct starpu_mpi_req_s));
+	memset(&status, 0, sizeof(MPI_Status));
+
 	starpu_mpi_isend(data_handle, &req, dest, mpi_tag, comm);
 	starpu_mpi_wait(&req, &status);
 
@@ -230,6 +239,8 @@ int starpu_mpi_test(struct starpu_mpi_req_s *req, int *flag, MPI_Status *status)
 	int ret = 0;
 	struct starpu_mpi_req_s testing_req;
 
+	memset(&testing_req, 0, sizeof(struct starpu_mpi_req_s));
+
 	pthread_mutex_lock(&req->req_mutex);
 
 	STARPU_ASSERT(!req->detached);