Skip to content

Commit 4ad3212

Browse files
committed
reduce redunancy and add write array rank mismatch check
1 parent 343f9ad commit 4ad3212

File tree

3 files changed

+108
-96
lines changed

3 files changed

+108
-96
lines changed

src/interface.f90

Lines changed: 12 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -536,57 +536,37 @@ subroutine hdf_shape_check(self, dname, dims, ierr)
536536
class(hdf5_file), intent(in) :: self
537537
character(*), intent(in) :: dname
538538
integer(HSIZE_T), intent(in) :: dims(:)
539-
integer, intent(out), optional :: ierr
539+
integer, intent(out) :: ierr
540540

541541
integer(SIZE_T) :: dsize
542542
integer(HSIZE_T) :: ddims(size(dims))
543-
integer :: dtype, drank, ier
543+
integer :: dtype, drank
544544

545545
if (.not.self%exist(dname)) then
546546
write(stderr,*) 'ERROR: ' // dname // ' does not exist in ' // self%filename
547-
if (present(ierr)) then
548-
ierr = -1
549-
return
550-
else
551-
error stop
552-
endif
547+
ierr = -1
548+
return
553549
endif
554550

555551
!> check for matching rank, else bad reads can occur--doesn't always crash without this check
556-
call h5ltget_dataset_ndims_f(self%lid, dname, drank, ier)
557-
if (present(ierr)) ierr = ier
558-
if (check(ier, 'ERROR: get_dataset_ndim ' // dname // ' read ' // self%filename)) then
559-
if (present(ierr)) return
560-
error stop
561-
endif
552+
call h5ltget_dataset_ndims_f(self%lid, dname, drank, ierr)
553+
if (check(ierr, 'ERROR: get_dataset_ndim ' // dname // ' read ' // self%filename)) return
562554

563555
if (drank /= size(dims)) then
564556
write(stderr,'(A,I6,A,I6)') 'ERROR: rank mismatch ' // dname // ' = ',drank,' variable rank =', size(dims)
565-
if (present(ierr)) then
566-
ierr = -1
567-
return
568-
else
569-
error stop
570-
endif
557+
ierr = -1
558+
return
571559
endif
572560

573561
!> check for matching size, else bad reads can occur.
574562

575-
call h5ltget_dataset_info_f(self%lid, dname, ddims, dtype, dsize, ier)
576-
if (present(ierr)) ierr = ier
577-
if (check(ier, 'ERROR: get_dataset_info ' // dname // ' read ' // self%filename)) then
578-
if (present(ierr)) return
579-
error stop
580-
endif
563+
call h5ltget_dataset_info_f(self%lid, dname, ddims, dtype, dsize, ierr)
564+
if (check(ierr, 'ERROR: get_dataset_info ' // dname // ' read ' // self%filename)) return
581565

582566
if(.not. all(dims == ddims)) then
583567
write(stderr,*) 'ERROR: shape mismatch ' // dname // ' = ',ddims,' variable shape =', dims
584-
if (present(ierr)) then
585-
ierr = -1
586-
return
587-
else
588-
error stop
589-
endif
568+
ierr = -1
569+
return
590570
endif
591571

592572
end subroutine hdf_shape_check

0 commit comments

Comments
 (0)