Index: mpinetcdf.c =================================================================== --- mpinetcdf.c +++ mpinetcdf.c @@ -12651,6 +12651,7 @@ } MPI_Type_create_hindexed(nvars, nbytes, displacement, MPI_BYTE, &buf_type); + MPI_Type_commit(&buf_type); mpireturn = MPI_File_write_all(ncp->nciop->collective_fh, xbuf[0], 1, buf_type, &mpistatus); if (mpireturn != MPI_SUCCESS) { int rank; @@ -12845,7 +12846,7 @@ } MPI_Type_create_hindexed(nvars, nbytes, displacement, MPI_BYTE, &buf_type); - + MPI_Type_commit(&buf_type); mpireturn = MPI_File_read_all(ncp->nciop->collective_fh, xbuf[0], 1, buf_type, &mpistatus); // mpireturn = MPI_File_read_all(ncp->nciop->collective_fh, xbuf[i], nbytes[i], MPI_BYTE, &mpistatus); @@ -13103,6 +13104,7 @@ } MPI_Type_create_hindexed(nvars*count[0][0], nbytes, displacement, MPI_BYTE, &buf_type); } + MPI_Type_commit(&buf_type); mpireturn = MPI_File_write_all(ncp->nciop->collective_fh, xbuf[0], 1, buf_type, &mpistatus); if (mpireturn != MPI_SUCCESS) { @@ -13213,7 +13215,7 @@ (*request)->count = (MPI_Offset *)malloc(varp->ndims*sizeof(MPI_Offset)); (*request)->buf = (void *)buf; (*request)->bufcount = bufcount; - (*request)->vartype = datatype; + (*request)->mpi_varatype = datatype; (*request)->next_req = NULL; for (dim = 0; dim < varp->ndims; dim++){ (*request)->start[dim]=start[dim]; @@ -13253,7 +13255,7 @@ (*request)->count = (MPI_Offset *)malloc(varp->ndims*sizeof(MPI_Offset)); (*request)->buf = (void *)buf; (*request)->bufcount = bufcount; - (*request)->vartype = datatype; + (*request)->mpi_varatype = datatype; (*request)->next_req = NULL; for (dim = 0; dim < varp->ndims; dim++){ (*request)->start[dim]=start[dim]; @@ -13271,12 +13273,12 @@ ret = ncmpi_put_vara_all(request->ncid, request->varid, request->start, request->count, request->buf, request->bufcount, - request->vartype); + request->mpi_varatype); } else if ( request->rw_flag == 0) { ret = (ncmpi_get_vara_all(request->ncid, request->varid, request->start, request->count, request->buf, request->bufcount, - request->vartype)); + request->mpi_varatype)); } else { ret = NC_EFILE; } @@ -13317,7 +13319,7 @@ } buf[i] = array_of_requests[i]->buf; bufcount[i] = array_of_requests[i]->bufcount; - datatype[i] = array_of_requests[i]->vartype; + datatype[i] = array_of_requests[i]->mpi_varatype; } if (array_of_requests[0]->rw_flag == 1) ncmpi_put_mvara_all(ncid, count, varids, Index: pnetcdf.h =================================================================== --- pnetcdf.h +++ pnetcdf.h @@ -76,6 +76,7 @@ int iscontig_of_ptypes; void *buf; MPI_Offset bufcount; + MPI_Datatype mpi_varatype; MPI_Datatype datatype; MPI_Datatype ptype; MPI_Datatype imaptype;