diff --git a/fpm.toml b/fpm.toml index 4f680c3..fcad046 100644 --- a/fpm.toml +++ b/fpm.toml @@ -8,12 +8,6 @@ auto-tests = false auto-examples = false external-modules = ["hdf5", "h5lt"] -# HDF5 >= 1.10.6 -# link = ["hdf5_hl_fortran", "hdf5_fortran", "hdf5_hl", "hdf5"] - -# HDF5 < 1.10.6, and distros that rename the old way such as Ubuntu 22.04 -link = ["hdf5hl_fortran", "hdf5_fortran", "hdf5_hl", "hdf5"] - [install] library = true @@ -80,3 +74,6 @@ main = "test_string.f90" [[test]] name = "version" main = "test_version.f90" + +[dependencies] +hdf5 = '*' diff --git a/src/utils.f90 b/src/utils.f90 index b113145..484f5f8 100644 --- a/src/utils.f90 +++ b/src/utils.f90 @@ -311,8 +311,9 @@ write(stderr,*) "ERROR:h5fortran:get_slice: memory size /= dataset size: check variable slice (index). " // & " Dset_dims:", ddims, "C Mem_dims:", c_mem_dims, "mem_dims:", mem_dims, "rank(mem_dims):", rank(mem_dims) error stop "ERROR:h5fortran:get_slice " // dset_name -elseif(any(iend-1 > ddims)) then - write(stderr,*) "ERROR:h5fortran:get_slice: iend: ", iend, ' > dset_dims: ', ddims +elseif(any(iend-istart > ddims)) then + write(stderr,*) "ERROR:h5fortran:get_slice: slice bigger than dataset: check variable slice (index). " // & + " Dset_dims:", ddims, "C Mem_dims:", c_mem_dims, "mem_dims:", mem_dims, "rank(mem_dims):", rank(mem_dims) error stop "ERROR:h5fortran:get_slice " // dset_name endif diff --git a/src/write.f90 b/src/write.f90 index ab5a469..e5a29b8 100644 --- a/src/write.f90 +++ b/src/write.f90 @@ -82,7 +82,7 @@ if (present(istart)) then if(any(istart < 1)) error stop 'ERROR:h5fortran:create: istart must be >= 1' - if(any(iend <= istart)) error stop 'ERROR:h5fortran:create: iend must be > istart' + if(any(iend < istart)) error stop 'ERROR:h5fortran:create: iend must be >= istart' call H5Sget_simple_extent_ndims_f(filespace_id, drank, ier) call estop(ier, "create:H5Sget_simple_extent_ndims", self%filename, dname) @@ -90,9 +90,11 @@ allocate(ddims(drank), maxdims(drank)) call H5Sget_simple_extent_dims_f(filespace_id, ddims, maxdims, ier) - if (ier /= drank) error stop 'ERROR:h5fortran:create: H5Sget_simple_extent_dims: ' // dname // ' in ' // self%filename + if (ier /= drank) & + error stop 'ERROR:h5fortran:create: H5Sget_simple_extent_dims: ' // dname // ' in ' // self%filename - if(any(iend > ddims)) error stop 'ERROR:h5fortran:create: iend > dset_dims' // dname // ' in ' // self%filename + if(any(iend - istart > ddims)) & + error stop 'ERROR:h5fortran:create: iend - istart > dset_dims' // dname // ' in ' // self%filename else if (size(mem_dims) == 0) then !! scalar