On 01/11/16 17:50, Gilles Filippini wrote:
Could you give me more insight of the compatibility problem with HDF5 1.10?

The most important change in the HDF5 1.10 release is that the hid_t
type was changed from 'int' to 'long long' [1]. Assuming that hid_t is
int isn't true anymore. Thus the change to the ISMRMRD_Dataset
structure, because the fileid field is actually used as an hid_t. See
for example the ismrmrd_open_dataset() function in libsrc/dataset.c:

int ismrmrd_open_dataset(ISMRMRD_Dataset *dset, const bool
create_if_needed) {
    /* TODO add a mode for clobbering the dataset if it exists. */
    hid_t fileid;
    ...
    fileid = H5Fopen(dset->filename, H5F_ACC_RDWR, H5P_DEFAULT);

    if (fileid > 0) {
        dset->fileid = fileid;
    }
    ...

I can see two solutions:
1- make libismrmrd-dev depend on libhdf5-dev
2- set fileid as type long long to avoid including hdf5.h

What do you think?

Considering the fix results in a change of API, I prefer polling upstream for an acknowledgement of the proposed solution:

  https://github.com/ismrmrd/ismrmrd/issues/73

Many thanks for the summary of the problem.

Ghis

Reply via email to