summaryrefslogtreecommitdiffstats
path: root/src/H5Dearray.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2016-04-16 08:42:48 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2016-04-16 08:42:48 (GMT)
commit81ef260f6bfcf7aae3d55b3672d8c4e07021a906 (patch)
tree0c64b4a0c8f7dddfb7d8eed82d57955522aa27c5 /src/H5Dearray.c
parenta916ea97b879b8ce1662d3772032022ae07eed31 (diff)
downloadhdf5-81ef260f6bfcf7aae3d55b3672d8c4e07021a906.zip
hdf5-81ef260f6bfcf7aae3d55b3672d8c4e07021a906.tar.gz
hdf5-81ef260f6bfcf7aae3d55b3672d8c4e07021a906.tar.bz2
[svn-r29717] Description:
Correct chunk index computation for earrays and farrays, particularly when copying datasets with H5Ocopy() and other operations (like H5Dget_storage_size) that require iterating over all chunks. Tested on: MacOSX/64 10.11.4 (amazon) w/serial & parallel (h5committest forthcoming)
Diffstat (limited to 'src/H5Dearray.c')
-rw-r--r--src/H5Dearray.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/H5Dearray.c b/src/H5Dearray.c
index f24c69a..5a90dd2 100644
--- a/src/H5Dearray.c
+++ b/src/H5Dearray.c
@@ -1067,7 +1067,7 @@ H5D__earray_idx_get_addr(const H5D_chk_idx_info_t *idx_info, H5D_chunk_ud_t *uda
} /* end if */
else {
/* Calculate the index of this chunk */
- idx = H5VM_array_offset_pre((idx_info->layout->ndims - 1), idx_info->layout->down_chunks, udata->common.scaled);
+ idx = H5VM_array_offset_pre((idx_info->layout->ndims - 1), idx_info->layout->max_down_chunks, udata->common.scaled);
} /* end else */
udata->chunk_idx = idx;
@@ -1147,6 +1147,7 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5D__earray_idx_resize() */
+
/*-------------------------------------------------------------------------
* Function: H5D__earray_idx_iterate_cb
*
@@ -1193,7 +1194,7 @@ H5D__earray_idx_iterate_cb(hsize_t H5_ATTR_UNUSED idx, const void *_elmt, void *
udata->chunk_rec.scaled[curr_dim]++;
/* Check if we went off the end of the current dimension */
- if(udata->chunk_rec.scaled[curr_dim] >= udata->common.layout->chunks[curr_dim]) {
+ if(udata->chunk_rec.scaled[curr_dim] >= udata->common.layout->max_chunks[curr_dim]) {
/* Reset coordinate & move to next faster dimension */
udata->chunk_rec.scaled[curr_dim] = 0;
curr_dim--;
@@ -1340,7 +1341,7 @@ H5D__earray_idx_remove(const H5D_chk_idx_info_t *idx_info, H5D_chunk_common_ud_t
} /* end if */
else {
/* Calculate the index of this chunk */
- idx = H5VM_array_offset_pre((idx_info->layout->ndims - 1), idx_info->layout->down_chunks, udata->scaled);
+ idx = H5VM_array_offset_pre((idx_info->layout->ndims - 1), idx_info->layout->max_down_chunks, udata->scaled);
} /* end else */
/* Check for filters on chunks */