summaryrefslogtreecommitdiffstats
path: root/src/H5Dcompact.c
diff options
context:
space:
mode:
authorVailin Choi <vchoi@jam.ad.hdfgroup.org>2017-07-11 05:12:02 (GMT)
committerVailin Choi <vchoi@jam.ad.hdfgroup.org>2017-07-11 05:12:02 (GMT)
commit2ba063c0a5d248c059f2422811beed76a2e624d8 (patch)
tree5f83aa9f5bf8f6c1f0a584f02eadfee9ba9cb304 /src/H5Dcompact.c
parent92de5e051f2f0ec6b7d846841adcaee7451881ec (diff)
downloadhdf5-2ba063c0a5d248c059f2422811beed76a2e624d8.zip
hdf5-2ba063c0a5d248c059f2422811beed76a2e624d8.tar.gz
hdf5-2ba063c0a5d248c059f2422811beed76a2e624d8.tar.bz2
Fix for HDFFV-7853 H5Ocopy to 1.8 branch
Apply the fix for HDFFV-7853 H5Ocopy from develop to 1.8 branch. This is the similar set of changes as in develop branch. Some coding is added to do the copying because 1.8 does not flush out the storage address when writing to a dataset.
Diffstat (limited to 'src/H5Dcompact.c')
-rw-r--r--src/H5Dcompact.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/H5Dcompact.c b/src/H5Dcompact.c
index b142f3b..4b61442 100644
--- a/src/H5Dcompact.c
+++ b/src/H5Dcompact.c
@@ -396,7 +396,7 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5D__compact_copy(H5F_t *f_src, H5O_storage_compact_t *storage_src, H5F_t *f_dst,
+H5D__compact_copy(H5F_t *f_src, H5O_storage_compact_t *_storage_src, H5F_t *f_dst,
H5O_storage_compact_t *storage_dst, H5T_t *dt_src, H5O_copy_t *cpy_info,
hid_t dxpl_id)
{
@@ -407,6 +407,8 @@ H5D__compact_copy(H5F_t *f_src, H5O_storage_compact_t *storage_src, H5F_t *f_dst
void *bkg = NULL; /* Temporary buffer for copying data */
void *reclaim_buf = NULL; /* Buffer for reclaiming data */
hid_t buf_sid = -1; /* ID for buffer dataspace */
+ H5D_shared_t *shared_fo = cpy_info->shared_fo; /* Pointer to the shared struct for dataset object */
+ H5O_storage_compact_t *storage_src = _storage_src; /* Pointer to storage_src */
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE
@@ -418,6 +420,10 @@ H5D__compact_copy(H5F_t *f_src, H5O_storage_compact_t *storage_src, H5F_t *f_dst
HDassert(storage_dst);
HDassert(dt_src);
+ /* If the dataset is open in the file, point to "layout" in the shared struct */
+ if(shared_fo != NULL)
+ storage_src = &(shared_fo->layout.storage.u.compact);
+
/* Allocate space for destination data */
if(NULL == (storage_dst->buf = H5MM_malloc(storage_src->size)))
HGOTO_ERROR(H5E_DATASET, H5E_CANTALLOC, FAIL, "unable to allocate memory for compact dataset")