diff options
author | Neil Fortner <nfortne2@hdfgroup.org> | 2011-10-20 22:01:21 (GMT) |
---|---|---|
committer | Neil Fortner <nfortne2@hdfgroup.org> | 2011-10-20 22:01:21 (GMT) |
commit | 72702153d2e3fe35aa526173f93f5510eb4b65fd (patch) | |
tree | 70a4a866edab23ef0c5ec1c6adc57922653e0219 /src/H5Aint.c | |
parent | cc6ce34d23ab42bcc0df38beb94ad5683f604aaa (diff) | |
download | hdf5-72702153d2e3fe35aa526173f93f5510eb4b65fd.zip hdf5-72702153d2e3fe35aa526173f93f5510eb4b65fd.tar.gz hdf5-72702153d2e3fe35aa526173f93f5510eb4b65fd.tar.bz2 |
[svn-r21629] Purpose: Update fix committed in r21556
Description:
An old patch was mistakenly committed in r21556. Replaced this fix with the
latest.
Tested: jam, koala, heiwa (h5committest)
Diffstat (limited to 'src/H5Aint.c')
-rw-r--r-- | src/H5Aint.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/H5Aint.c b/src/H5Aint.c index 71f37a1..bb9731d 100644 --- a/src/H5Aint.c +++ b/src/H5Aint.c @@ -851,7 +851,8 @@ H5A_attr_copy_file(const H5A_t *attr_src, H5F_t *file_dst, hbool_t *recompute_si HDassert(attr_dst->shared->name); /* Copy attribute's datatype */ - /* (Start destination datatype as transient, even if source is named) */ + /* If source is named, we will keep dst as named, but we will not actually + * copy the target and update the message until post copy */ if(NULL == (attr_dst->shared->dt = H5T_copy(attr_src->shared->dt, H5T_COPY_ALL))) HGOTO_ERROR(H5E_OHDR, H5E_CANTCOPY, NULL, "cannot copy datatype") @@ -879,13 +880,13 @@ H5A_attr_copy_file(const H5A_t *attr_src, H5F_t *file_dst, hbool_t *recompute_si if(H5O_msg_reset_share(H5O_SDSPACE_ID, attr_dst->shared->ds) < 0) HGOTO_ERROR(H5E_OHDR, H5E_CANTINIT, NULL, "unable to reset dataspace sharing") - /* Try to share both the datatype and dataset. This does nothing if the - * datatype is committed or sharing is disabled. + /* Simulate trying to share both the datatype and dataset, to determine the + * final size of the messages. This does nothing if the datatype is + * committed or sharing is disabled. */ - /* Use try_share_virtual and move try_share to post copy? -NAF */ - if(H5SM_try_share(file_dst, dxpl_id, NULL, FALSE, H5O_DTYPE_ID, attr_dst->shared->dt, NULL) < 0) + if(H5SM_try_share(file_dst, dxpl_id, NULL, H5SM_DEFER, H5O_DTYPE_ID, attr_dst->shared->dt, NULL) < 0) HGOTO_ERROR(H5E_OHDR, H5E_WRITEERROR, NULL, "can't share attribute datatype") - if(H5SM_try_share(file_dst, dxpl_id, NULL, FALSE, H5O_SDSPACE_ID, attr_dst->shared->ds, NULL) < 0) + if(H5SM_try_share(file_dst, dxpl_id, NULL, H5SM_DEFER, H5O_SDSPACE_ID, attr_dst->shared->ds, NULL) < 0) HGOTO_ERROR(H5E_OHDR, H5E_WRITEERROR, NULL, "can't share attribute dataspace") /* Compute the sizes of the datatype and dataspace. This is their raw @@ -1100,6 +1101,14 @@ H5A_attr_post_copy_file(const H5O_loc_t *src_oloc, const H5A_t *attr_src, H5T_update_shared(attr_dst->shared->dt); } /* end if */ + /* Try to share both the datatype and dataset. This does nothing if the + * datatype is committed or sharing is disabled. + */ + if(H5SM_try_share(file_dst, dxpl_id, NULL, H5SM_WAS_DEFERRED, H5O_DTYPE_ID, attr_dst->shared->dt, NULL) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_WRITEERROR, FAIL, "can't share attribute datatype") + if(H5SM_try_share(file_dst, dxpl_id, NULL, H5SM_WAS_DEFERRED, H5O_SDSPACE_ID, attr_dst->shared->ds, NULL) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_WRITEERROR, FAIL, "can't share attribute dataspace") + /* Only need to fix reference attribute with real data being copied to * another file. */ |