Fix bug with cross platform compatibility of references within vlens. (#1064)

No testing yet.
This commit is contained in:
Neil Fortner
2021-10-01 14:28:50 -05:00
committed by GitHub
parent 1f7ddf47f5
commit 22cdccb799
2 changed files with 11 additions and 2 deletions
+9
View File
@@ -1008,6 +1008,15 @@ Bug Fixes since HDF5-1.12.0 release
===================================
Library
-------
- Fixed cross platform incompatibility of references within variable length
types
Reference types within variable length types previously could not be
read on a platform with different endianness from where they were
written. Fixed so cross platform portability is restored.
(NAF - 2021/09/30)
- Detection of simple data transform function "x"
In the case of the simple data transform function "x" the (parallel)
+2 -2
View File
@@ -3205,14 +3205,14 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, si
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCOPY, FAIL, "unable to copy src type for conversion")
/* References need to know about the src file */
if (tsrc_cpy->shared->type == H5T_REFERENCE)
if (H5T_set_loc(tsrc_cpy, src->shared->u.vlen.file, H5T_LOC_MEMORY) < 0)
if (H5T_set_loc(tsrc_cpy, src->shared->u.vlen.file, src->shared->u.vlen.loc) < 0)
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTSET, FAIL, "can't set datatype location");
if (NULL == (tdst_cpy = H5T_copy(dst->shared->parent, H5T_COPY_ALL)))
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTCOPY, FAIL, "unable to copy dst type for conversion")
/* References need to know about the dst file */
if (tdst_cpy->shared->type == H5T_REFERENCE)
if (H5T_set_loc(tdst_cpy, dst->shared->u.vlen.file, H5T_LOC_MEMORY) < 0)
if (H5T_set_loc(tdst_cpy, dst->shared->u.vlen.file, dst->shared->u.vlen.loc) < 0)
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTSET, FAIL, "can't set datatype location");
if (((tsrc_id = H5I_register(H5I_DATATYPE, tsrc_cpy, FALSE)) < 0) ||