diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2018-11-20 03:09:28 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2018-11-20 03:09:28 (GMT) |
commit | 23ff0240ae18d52ac8164c7a55d698e7b2cd5dcc (patch) | |
tree | 09f6bc5d390c65972c9913e14a84f5a116c17eda | |
parent | 6c99961bb2772dd809ff200bf9a6c456f8e9a1d9 (diff) | |
parent | 160107a97c30a759ffd4ba7fe13284d24d349301 (diff) | |
download | hdf5-23ff0240ae18d52ac8164c7a55d698e7b2cd5dcc.zip hdf5-23ff0240ae18d52ac8164c7a55d698e7b2cd5dcc.tar.gz hdf5-23ff0240ae18d52ac8164c7a55d698e7b2cd5dcc.tar.bz2 |
Merge branch 'develop' of https://bitbucket.hdfgroup.org/scm/hdffv/hdf5 into stackable_vol
-rw-r--r-- | src/H5Dchunk.c | 3 | ||||
-rw-r--r-- | src/H5Olayout.c | 8 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/H5Dchunk.c b/src/H5Dchunk.c index cb6b925..91f3b91 100644 --- a/src/H5Dchunk.c +++ b/src/H5Dchunk.c @@ -695,6 +695,9 @@ H5D__chunk_set_info_real(H5O_layout_chunk_t *layout, unsigned ndims, /* Compute the # of chunks in dataset dimensions */ for(u = 0, layout->nchunks = 1, layout->max_nchunks = 1; u < ndims; u++) { + /* Sanity check */ + HDassert(layout->dim[u] > 0); + /* Round up to the next integer # of chunks, to accommodate partial chunks */ layout->chunks[u] = ((curr_dims[u] + layout->dim[u]) - 1) / layout->dim[u]; if(H5S_UNLIMITED == max_dims[u]) diff --git a/src/H5Olayout.c b/src/H5Olayout.c index 5f16837..2b65e0c 100644 --- a/src/H5Olayout.c +++ b/src/H5Olayout.c @@ -243,9 +243,15 @@ H5O__layout_decode(H5F_t *f, H5O_t H5_ATTR_UNUSED *open_oh, H5F_addr_decode(f, &p, &(mesg->storage.u.chunk.idx_addr)); /* Chunk dimensions */ - for(u = 0; u < mesg->u.chunk.ndims; u++) + for(u = 0; u < mesg->u.chunk.ndims; u++) { UINT32DECODE(p, mesg->u.chunk.dim[u]); + /* Just in case that something goes very wrong, such as file corruption. */ + if(mesg->u.chunk.dim[u] == 0) + HGOTO_ERROR(H5E_DATASET, H5E_BADVALUE, NULL, "chunk dimension must be positive: mesg->u.chunk.dim[%u] = %u", + u, mesg->u.chunk.dim[u]) + } /* end for */ + /* Compute chunk size */ for(u = 1, mesg->u.chunk.size = mesg->u.chunk.dim[0]; u < mesg->u.chunk.ndims; u++) mesg->u.chunk.size *= mesg->u.chunk.dim[u]; |