1
1

Correctly free the temporary datatypes

Этот коммит содержится в:
George Bosilca 2015-04-30 22:51:01 -04:00
родитель 33a3ace874
Коммит 27c3631466

Просмотреть файл

@ -111,9 +111,6 @@ main(int argc, char* argv[])
memcpy(payload, packed_ddt, packed_ddt_len); memcpy(payload, packed_ddt, packed_ddt_len);
ret = MPI_Type_free(&struct_type);
if (ret != 0) goto cleanup;
unpacked_dt = ompi_datatype_create_from_packed_description(&payload, ompi_proc_local()); unpacked_dt = ompi_datatype_create_from_packed_description(&payload, ompi_proc_local());
free(ptr); free(ptr);
if (unpacked_dt == NULL) { if (unpacked_dt == NULL) {
@ -132,6 +129,9 @@ main(int argc, char* argv[])
} }
printf("\tPASSED\n"); printf("\tPASSED\n");
} }
ret = MPI_Type_free(&struct_type);
if (ret != 0) goto cleanup;
ret = MPI_Type_free(&unpacked_dt); ret = MPI_Type_free(&unpacked_dt);
if (ret != 0) goto cleanup; if (ret != 0) goto cleanup;
@ -158,8 +158,6 @@ main(int argc, char* argv[])
if (ret != 0) goto cleanup; if (ret != 0) goto cleanup;
memcpy(payload, packed_ddt, packed_ddt_len); memcpy(payload, packed_ddt, packed_ddt_len);
ret = MPI_Type_free(&vec_type);
if (ret != 0) goto cleanup;
unpacked_dt = ompi_datatype_create_from_packed_description(&payload, unpacked_dt = ompi_datatype_create_from_packed_description(&payload,
ompi_proc_local()); ompi_proc_local());
@ -180,6 +178,9 @@ main(int argc, char* argv[])
} }
printf("\tPASSED\n"); printf("\tPASSED\n");
} }
ret = MPI_Type_free(&vec_type);
if (ret != 0) goto cleanup;
ret = MPI_Type_free(&unpacked_dt); ret = MPI_Type_free(&unpacked_dt);
if (ret != 0) goto cleanup; if (ret != 0) goto cleanup;
@ -209,9 +210,6 @@ main(int argc, char* argv[])
ret = ompi_datatype_get_pack_description(newType, &packed_ddt); ret = ompi_datatype_get_pack_description(newType, &packed_ddt);
if (ret != 0) goto cleanup; if (ret != 0) goto cleanup;
ret = MPI_Type_free(&newType);
if (ret != 0) goto cleanup;
memcpy(payload, packed_ddt, packed_ddt_len); memcpy(payload, packed_ddt, packed_ddt_len);
unpacked_dt = ompi_datatype_create_from_packed_description(&payload, unpacked_dt = ompi_datatype_create_from_packed_description(&payload,
ompi_proc_local()); ompi_proc_local());
@ -232,6 +230,9 @@ main(int argc, char* argv[])
} }
printf("\tPASSED\n"); printf("\tPASSED\n");
} }
ret = MPI_Type_free(&newType);
if (ret != 0) goto cleanup;
ret = MPI_Type_free(&unpacked_dt); ret = MPI_Type_free(&unpacked_dt);
if (ret != 0) goto cleanup; if (ret != 0) goto cleanup;
@ -281,6 +282,10 @@ main(int argc, char* argv[])
} }
printf("\tPASSED\n"); printf("\tPASSED\n");
} }
ret = MPI_Type_free(&newType);
if (ret != 0) goto cleanup;
newType = unpacked_dt; /* save it for later */
/** /**
* *
@ -313,9 +318,6 @@ main(int argc, char* argv[])
if (ret != 0) goto cleanup; if (ret != 0) goto cleanup;
memcpy(payload, packed_ddt, packed_ddt_len); memcpy(payload, packed_ddt, packed_ddt_len);
ret = MPI_Type_free(&struct_type);
if (ret != 0) goto cleanup;
unpacked_dt = ompi_datatype_create_from_packed_description(&payload, unpacked_dt = ompi_datatype_create_from_packed_description(&payload,
ompi_proc_local()); ompi_proc_local());
free(ptr); free(ptr);
@ -335,6 +337,12 @@ main(int argc, char* argv[])
} }
printf("\tPASSED\n"); printf("\tPASSED\n");
} }
ret = MPI_Type_free(&struct_type);
if (ret != 0) goto cleanup;
ret = MPI_Type_free(&unpacked_dt);
if (ret != 0) goto cleanup;
cleanup: cleanup:
MPI_Finalize(); MPI_Finalize();