diff --git a/fortran/src/H5Pf.c b/fortran/src/H5Pf.c index 17045a25570..ce62673686c 100644 --- a/fortran/src/H5Pf.c +++ b/fortran/src/H5Pf.c @@ -4606,8 +4606,8 @@ h5pset_fapl_mpio_c(hid_t_f *prp_id, void *comm, void *info) herr_t ret; MPI_Comm c_comm; MPI_Info c_info; - c_comm = MPI_Comm_f2c(*((int *)comm)); - c_info = MPI_Info_f2c(*((int *)info)); + c_comm = MPI_Comm_f2c(*((MPI_Fint *)comm)); + c_info = MPI_Info_f2c(*((MPI_Fint *)info)); /* * Call H5Pset_mpi function. @@ -4677,8 +4677,8 @@ h5pset_mpi_params_c(hid_t_f *prp_id, void *comm, void *info) herr_t ret; MPI_Comm c_comm; MPI_Info c_info; - c_comm = MPI_Comm_f2c(*((int *)comm)); - c_info = MPI_Info_f2c(*((int *)info)); + c_comm = MPI_Comm_f2c(*((MPI_Fint *)comm)); + c_info = MPI_Info_f2c(*((MPI_Fint *)info)); /* * Call H5Pset_mpi_params. diff --git a/fortran/test/tH5P_F03.F90 b/fortran/test/tH5P_F03.F90 index c962d52821b..64dd1d2891c 100644 --- a/fortran/test/tH5P_F03.F90 +++ b/fortran/test/tH5P_F03.F90 @@ -47,7 +47,7 @@ MODULE test_genprop_cls_cb1_mod CONTAINS - INTEGER FUNCTION test_genprop_cls_cb1_f(list_id, create_data ) bind(C) + INTEGER(KIND=C_INT) FUNCTION test_genprop_cls_cb1_f(list_id, create_data ) bind(C) IMPLICIT NONE diff --git a/hl/src/H5TB.c b/hl/src/H5TB.c index e718605b5a3..82977b3253c 100644 --- a/hl/src/H5TB.c +++ b/hl/src/H5TB.c @@ -2025,7 +2025,7 @@ H5TBinsert_field(hid_t loc_id, const char *dset_name, const char *field_name, hi goto out; /* alloc fill value attribute buffer */ - if (NULL == (tmp_fill_buf = (unsigned char *)malloc(total_size))) + if (NULL == (tmp_fill_buf = (unsigned char *)calloc(1, total_size))) goto out; /* get the fill value attributes */ diff --git a/hl/test/test_table.c b/hl/test/test_table.c index c6614343037..8996fa46480 100644 --- a/hl/test/test_table.c +++ b/hl/test/test_table.c @@ -376,6 +376,8 @@ test_table(hid_t fid, int do_write) field_type[3] = H5T_NATIVE_DOUBLE; field_type[4] = H5T_NATIVE_INT; + memset(wbufd, 0, NRECORDS * sizeof(particle_t)); + /*------------------------------------------------------------------------- * * Functions tested: diff --git a/m4/aclocal_fc.m4 b/m4/aclocal_fc.m4 index ebc64c6f7bc..e6a1f26ec35 100644 --- a/m4/aclocal_fc.m4 +++ b/m4/aclocal_fc.m4 @@ -390,7 +390,8 @@ AC_DEFUN([PAC_FIND_MPI_LOGICAL_KIND],[ AC_REQUIRE([PAC_FC_AVAIL_KINDS]) AC_MSG_CHECKING([default Fortran KIND of LOGICAL in MPI]) AC_LANG_PUSH([Fortran]) - +saved_FCFLAGS=$FCFLAGS +FCFLAGS="" for kind in `echo $pac_validLogicalKinds | sed -e 's/,/ /g'`; do AC_COMPILE_IFELSE([ PROGRAM main @@ -411,6 +412,7 @@ else AC_DEFINE_UNQUOTED([MPI_LOGICAL_KIND], [$PAC_MPI_LOGICAL_KIND], [Define MPI Fortran KIND of LOGICAL]) AC_MSG_RESULT([$PAC_MPI_LOGICAL_KIND]) fi +FCFLAGS=$saved_FCFLAGS AC_LANG_POP([Fortran]) ]) diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt index 846b443847c..17201848f60 100644 --- a/release_docs/RELEASE.txt +++ b/release_docs/RELEASE.txt @@ -1772,6 +1772,9 @@ Known Problems implemented: (1) derived type argument passed by value (H5VLff.F90), and (2) support for REAL with KIND = 2 in intrinsic SPACING used in testing. + Fortran tests HDF5_1_8.F90 and HDF5_F03.F90 will fail with Cray compilers greater than + version 16.0 due to a compiler bug. The latest version verified as failing was version 17.0. + Several tests currently fail on certain platforms: MPI_TEST-t_bigio fails with spectrum-mpi on ppc64le platforms. diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h index a73dffb2ca5..804e7880280 100644 --- a/src/H5Ppublic.h +++ b/src/H5Ppublic.h @@ -46,56 +46,182 @@ * The library's property list classes */ -#define H5P_ROOT (H5OPEN H5P_CLS_ROOT_ID_g) -#define H5P_OBJECT_CREATE (H5OPEN H5P_CLS_OBJECT_CREATE_ID_g) -#define H5P_FILE_CREATE (H5OPEN H5P_CLS_FILE_CREATE_ID_g) -#define H5P_FILE_ACCESS (H5OPEN H5P_CLS_FILE_ACCESS_ID_g) -#define H5P_DATASET_CREATE (H5OPEN H5P_CLS_DATASET_CREATE_ID_g) -#define H5P_DATASET_ACCESS (H5OPEN H5P_CLS_DATASET_ACCESS_ID_g) -#define H5P_DATASET_XFER (H5OPEN H5P_CLS_DATASET_XFER_ID_g) -#define H5P_FILE_MOUNT (H5OPEN H5P_CLS_FILE_MOUNT_ID_g) -#define H5P_GROUP_CREATE (H5OPEN H5P_CLS_GROUP_CREATE_ID_g) -#define H5P_GROUP_ACCESS (H5OPEN H5P_CLS_GROUP_ACCESS_ID_g) -#define H5P_DATATYPE_CREATE (H5OPEN H5P_CLS_DATATYPE_CREATE_ID_g) -#define H5P_DATATYPE_ACCESS (H5OPEN H5P_CLS_DATATYPE_ACCESS_ID_g) -#define H5P_MAP_CREATE (H5OPEN H5P_CLS_MAP_CREATE_ID_g) -#define H5P_MAP_ACCESS (H5OPEN H5P_CLS_MAP_ACCESS_ID_g) -#define H5P_STRING_CREATE (H5OPEN H5P_CLS_STRING_CREATE_ID_g) +/** + * Property list class root, is not user-accessible + */ +#define H5P_ROOT (H5OPEN H5P_CLS_ROOT_ID_g) +/** + * Object creation property list class, is not user-accessible + */ +#define H5P_OBJECT_CREATE (H5OPEN H5P_CLS_OBJECT_CREATE_ID_g) +/** + * File creation property list class + */ +#define H5P_FILE_CREATE (H5OPEN H5P_CLS_FILE_CREATE_ID_g) +/** + * File access property list class + */ +#define H5P_FILE_ACCESS (H5OPEN H5P_CLS_FILE_ACCESS_ID_g) +/** + * Dataset creation property list class + */ +#define H5P_DATASET_CREATE (H5OPEN H5P_CLS_DATASET_CREATE_ID_g) +/** + * Dataset access property list class + */ +#define H5P_DATASET_ACCESS (H5OPEN H5P_CLS_DATASET_ACCESS_ID_g) +/** + * Dataset transfer property list class + */ +#define H5P_DATASET_XFER (H5OPEN H5P_CLS_DATASET_XFER_ID_g) +/** + * File mount property list class + */ +#define H5P_FILE_MOUNT (H5OPEN H5P_CLS_FILE_MOUNT_ID_g) +/** + * Group creation property list class + */ +#define H5P_GROUP_CREATE (H5OPEN H5P_CLS_GROUP_CREATE_ID_g) +/** + * Group access property list class + */ +#define H5P_GROUP_ACCESS (H5OPEN H5P_CLS_GROUP_ACCESS_ID_g) +/** + * Datatype creation property list class + */ +#define H5P_DATATYPE_CREATE (H5OPEN H5P_CLS_DATATYPE_CREATE_ID_g) +/** + * Datatype access property list class + */ +#define H5P_DATATYPE_ACCESS (H5OPEN H5P_CLS_DATATYPE_ACCESS_ID_g) +/** + * Map creation property list class + */ +#define H5P_MAP_CREATE (H5OPEN H5P_CLS_MAP_CREATE_ID_g) +/** + * Map access property list class + */ +#define H5P_MAP_ACCESS (H5OPEN H5P_CLS_MAP_ACCESS_ID_g) +/** + * String creation property list class, is not user-accessible + */ +#define H5P_STRING_CREATE (H5OPEN H5P_CLS_STRING_CREATE_ID_g) +/** + * Attribute creation property list class + */ #define H5P_ATTRIBUTE_CREATE (H5OPEN H5P_CLS_ATTRIBUTE_CREATE_ID_g) +/** + * Attribute access property list class + */ #define H5P_ATTRIBUTE_ACCESS (H5OPEN H5P_CLS_ATTRIBUTE_ACCESS_ID_g) -#define H5P_OBJECT_COPY (H5OPEN H5P_CLS_OBJECT_COPY_ID_g) -#define H5P_LINK_CREATE (H5OPEN H5P_CLS_LINK_CREATE_ID_g) -#define H5P_LINK_ACCESS (H5OPEN H5P_CLS_LINK_ACCESS_ID_g) -#define H5P_VOL_INITIALIZE (H5OPEN H5P_CLS_VOL_INITIALIZE_ID_g) +/** + * Object copy property list class + */ +#define H5P_OBJECT_COPY (H5OPEN H5P_CLS_OBJECT_COPY_ID_g) +/** + * Link creation property list class + */ +#define H5P_LINK_CREATE (H5OPEN H5P_CLS_LINK_CREATE_ID_g) +/** + * Link access property list class + */ +#define H5P_LINK_ACCESS (H5OPEN H5P_CLS_LINK_ACCESS_ID_g) +/** + * VOL initialization property list class + */ +#define H5P_VOL_INITIALIZE (H5OPEN H5P_CLS_VOL_INITIALIZE_ID_g) +/** + * Reference access property list class + */ #define H5P_REFERENCE_ACCESS (H5OPEN H5P_CLS_REFERENCE_ACCESS_ID_g) /* * The library's default property lists */ -#define H5P_FILE_CREATE_DEFAULT (H5OPEN H5P_LST_FILE_CREATE_ID_g) -#define H5P_FILE_ACCESS_DEFAULT (H5OPEN H5P_LST_FILE_ACCESS_ID_g) -#define H5P_DATASET_CREATE_DEFAULT (H5OPEN H5P_LST_DATASET_CREATE_ID_g) -#define H5P_DATASET_ACCESS_DEFAULT (H5OPEN H5P_LST_DATASET_ACCESS_ID_g) -#define H5P_DATASET_XFER_DEFAULT (H5OPEN H5P_LST_DATASET_XFER_ID_g) -#define H5P_FILE_MOUNT_DEFAULT (H5OPEN H5P_LST_FILE_MOUNT_ID_g) -#define H5P_GROUP_CREATE_DEFAULT (H5OPEN H5P_LST_GROUP_CREATE_ID_g) -#define H5P_GROUP_ACCESS_DEFAULT (H5OPEN H5P_LST_GROUP_ACCESS_ID_g) -#define H5P_DATATYPE_CREATE_DEFAULT (H5OPEN H5P_LST_DATATYPE_CREATE_ID_g) -#define H5P_DATATYPE_ACCESS_DEFAULT (H5OPEN H5P_LST_DATATYPE_ACCESS_ID_g) -#define H5P_MAP_CREATE_DEFAULT (H5OPEN H5P_LST_MAP_CREATE_ID_g) -#define H5P_MAP_ACCESS_DEFAULT (H5OPEN H5P_LST_MAP_ACCESS_ID_g) +/** + * File creation default property list + */ +#define H5P_FILE_CREATE_DEFAULT (H5OPEN H5P_LST_FILE_CREATE_ID_g) +/** + * File access default property list + */ +#define H5P_FILE_ACCESS_DEFAULT (H5OPEN H5P_LST_FILE_ACCESS_ID_g) +/** + * Dataset creation default property list + */ +#define H5P_DATASET_CREATE_DEFAULT (H5OPEN H5P_LST_DATASET_CREATE_ID_g) +/** + * Dataset access default property list + */ +#define H5P_DATASET_ACCESS_DEFAULT (H5OPEN H5P_LST_DATASET_ACCESS_ID_g) +/** + * Dataset transfer default property list + */ +#define H5P_DATASET_XFER_DEFAULT (H5OPEN H5P_LST_DATASET_XFER_ID_g) +/** + * File mount default property list + */ +#define H5P_FILE_MOUNT_DEFAULT (H5OPEN H5P_LST_FILE_MOUNT_ID_g) +/** + * Group creation default property list + */ +#define H5P_GROUP_CREATE_DEFAULT (H5OPEN H5P_LST_GROUP_CREATE_ID_g) +/** + * Group access default property list + */ +#define H5P_GROUP_ACCESS_DEFAULT (H5OPEN H5P_LST_GROUP_ACCESS_ID_g) +/** + * Datytype creation default property list + */ +#define H5P_DATATYPE_CREATE_DEFAULT (H5OPEN H5P_LST_DATATYPE_CREATE_ID_g) +/** + * Datytype access default property list + */ +#define H5P_DATATYPE_ACCESS_DEFAULT (H5OPEN H5P_LST_DATATYPE_ACCESS_ID_g) +/** + * Map creation default property list + */ +#define H5P_MAP_CREATE_DEFAULT (H5OPEN H5P_LST_MAP_CREATE_ID_g) +/** + * Map access default property list + */ +#define H5P_MAP_ACCESS_DEFAULT (H5OPEN H5P_LST_MAP_ACCESS_ID_g) +/** + * Attribute creation default property list + */ #define H5P_ATTRIBUTE_CREATE_DEFAULT (H5OPEN H5P_LST_ATTRIBUTE_CREATE_ID_g) +/** + * Attribute access default property list + */ #define H5P_ATTRIBUTE_ACCESS_DEFAULT (H5OPEN H5P_LST_ATTRIBUTE_ACCESS_ID_g) -#define H5P_OBJECT_COPY_DEFAULT (H5OPEN H5P_LST_OBJECT_COPY_ID_g) -#define H5P_LINK_CREATE_DEFAULT (H5OPEN H5P_LST_LINK_CREATE_ID_g) -#define H5P_LINK_ACCESS_DEFAULT (H5OPEN H5P_LST_LINK_ACCESS_ID_g) -#define H5P_VOL_INITIALIZE_DEFAULT (H5OPEN H5P_LST_VOL_INITIALIZE_ID_g) +/** + * Object copy default property list + */ +#define H5P_OBJECT_COPY_DEFAULT (H5OPEN H5P_LST_OBJECT_COPY_ID_g) +/** + * Link creation default property list + */ +#define H5P_LINK_CREATE_DEFAULT (H5OPEN H5P_LST_LINK_CREATE_ID_g) +/** + * Link access default property list + */ +#define H5P_LINK_ACCESS_DEFAULT (H5OPEN H5P_LST_LINK_ACCESS_ID_g) +/** + * VOL initialization default property list + */ +#define H5P_VOL_INITIALIZE_DEFAULT (H5OPEN H5P_LST_VOL_INITIALIZE_ID_g) +/** + * Reference access default property list + */ #define H5P_REFERENCE_ACCESS_DEFAULT (H5OPEN H5P_LST_REFERENCE_ACCESS_ID_g) - -/* Common creation order flags (for links in groups and attributes on objects) */ +/** + * Attribute creation order is tracked but not necessarily indexed + */ #define H5P_CRT_ORDER_TRACKED 0x0001 +/** + * Attribute creation order is indexed (requires #H5P_CRT_ORDER_TRACKED) + */ #define H5P_CRT_ORDER_INDEXED 0x0002 - /** * Default value of type \ref hid_t for all property list classes */ diff --git a/test/cmpd_dtransform.c b/test/cmpd_dtransform.c index 8fd3788a9ab..be05b008969 100644 --- a/test/cmpd_dtransform.c +++ b/test/cmpd_dtransform.c @@ -30,7 +30,8 @@ main(void) { hsize_t dima[] = {1}; hsize_t dims[] = {LENGTH}; - hid_t str_dtyp_id = H5I_INVALID_HID, att_dtyp_id = H5I_INVALID_HID; + hid_t str_dtyp_id = H5I_INVALID_HID; + hid_t att_dtyp_id = H5I_INVALID_HID; hid_t file_id = H5I_INVALID_HID; hid_t fspace_id = H5I_INVALID_HID; hid_t dset_id = H5I_INVALID_HID; @@ -43,54 +44,58 @@ main(void) att_t *atts = NULL; att_t *atts_res = NULL; + printf("Testing writing compound attributes followed by data w/ transform.\n"); + + TESTING("data types are reset properly"); + /* Compound datatype */ - if (NULL == (atts = malloc(sizeof(att_t)))) + if (NULL == (atts = (att_t *)calloc(1, sizeof(att_t)))) TEST_ERROR; strcpy(atts[0].name, "Name"); strcpy(atts[0].unit, "Unit"); /* String type */ if ((str_dtyp_id = H5Tcopy(H5T_C_S1)) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if (H5Tset_size(str_dtyp_id, 64) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /* Attribute type */ if ((att_dtyp_id = H5Tcreate(H5T_COMPOUND, sizeof(att_t))) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if (H5Tinsert(att_dtyp_id, "NAME", HOFFSET(att_t, name), str_dtyp_id) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if (H5Tinsert(att_dtyp_id, "UNIT", HOFFSET(att_t, unit), str_dtyp_id) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /* Create file. */ if ((file_id = H5Fcreate(FILENAME, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /* Create file dataspace. */ if ((fspace_id = H5Screate_simple(1, dims, NULL)) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /* Create dataset. */ if ((dset_id = H5Dcreate2(file_id, "test_dset", H5T_NATIVE_INT, fspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /* Write the attribute (compound) to the dataset */ if ((att_dspc_id = H5Screate_simple(1, dima, NULL)) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if ((att_attr_id = H5Acreate2(dset_id, "ATTRIBUTES", att_dtyp_id, att_dspc_id, H5P_DEFAULT, H5P_DEFAULT)) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if (H5Awrite(att_attr_id, att_dtyp_id, atts) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /* Create dataset transfer property list */ if ((dxpl_id = H5Pcreate(H5P_DATASET_XFER)) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if (H5Pset_data_transform(dxpl_id, expr) < 0) { printf("**** ERROR: H5Pset_data_transform (expression: %s) ****\n", expr); - FAIL_STACK_ERROR; + TEST_ERROR; } if (NULL == (data = malloc(LENGTH * sizeof(int)))) @@ -104,13 +109,13 @@ main(void) /* Write the data */ if (H5Dwrite(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, dxpl_id, data) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /* Read attribute */ if (NULL == (atts_res = malloc(sizeof(att_t)))) TEST_ERROR; if (H5Aread(att_attr_id, att_dtyp_id, atts_res) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /* Verify attribute */ if (strcmp(atts_res[0].name, atts[0].name) != 0) @@ -120,37 +125,40 @@ main(void) /* Read the data */ if (H5Dread(dset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, data) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; /* Verify data */ for (unsigned idx = 0; idx < LENGTH; idx++) if (data[idx] != data_res[idx]) TEST_ERROR; - free(atts); - free(atts_res); - free(data); - free(data_res); - /* Close all identifiers. */ if (H5Pclose(dxpl_id) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if (H5Aclose(att_attr_id) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if (H5Sclose(att_dspc_id) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if (H5Dclose(dset_id) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if (H5Sclose(fspace_id) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if (H5Fclose(file_id) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if (H5Tclose(att_dtyp_id) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; if (H5Tclose(str_dtyp_id) < 0) - FAIL_STACK_ERROR; + TEST_ERROR; - return 0; + free(atts); + free(atts_res); + free(data); + free(data_res); + + HDremove(FILENAME); + + PASSED(); + return EXIT_SUCCESS; error: H5E_BEGIN_TRY @@ -166,14 +174,10 @@ main(void) } H5E_END_TRY - if (atts) - free(atts); - if (atts_res) - free(atts_res); - if (data) - free(data); - if (data_res) - free(data_res); + free(atts); + free(atts_res); + free(data); + free(data_res); - return 1; + return EXIT_FAILURE; }