diff options
author | Quincey Koziol <koziol@koziol.gov> | 2020-05-01 22:59:57 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@koziol.gov> | 2020-05-01 22:59:57 (GMT) |
commit | ac069841f3e4fd415750ebfa08c9011cfa688418 (patch) | |
tree | 3040ba3f71ff5c61dbbe245726a8e6fdfb7d4bd6 /src | |
parent | a1435404b5ff7cfccbaaa75534fc35a6776b17eb (diff) | |
download | hdf5-ac069841f3e4fd415750ebfa08c9011cfa688418.zip hdf5-ac069841f3e4fd415750ebfa08c9011cfa688418.tar.gz hdf5-ac069841f3e4fd415750ebfa08c9011cfa688418.tar.bz2 |
Avoid allocating a chunk index for datasets with 0-sized dimensions, until
the dataset is extended.
Diffstat (limited to 'src')
-rw-r--r-- | src/H5Dint.c | 2 | ||||
-rw-r--r-- | src/H5Dlayout.c | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/H5Dint.c b/src/H5Dint.c index 4c6814d..574bc0d 100644 --- a/src/H5Dint.c +++ b/src/H5Dint.c @@ -2296,7 +2296,7 @@ H5D__alloc_storage(const H5D_io_info_t *io_info, H5D_time_alloc_t time_alloc, * We assume that external storage is already * allocated by the caller, or at least will be before I/O is performed. */ - if(!(H5S_NULL == H5S_GET_EXTENT_TYPE(dset->shared->space) || dset->shared->dcpl_cache.efl.nused > 0)) { + if(!(0 == H5S_GET_EXTENT_NPOINTS(dset->shared->space) || dset->shared->dcpl_cache.efl.nused > 0)) { /* Get a pointer to the dataset's layout information */ layout = &(dset->shared->layout); diff --git a/src/H5Dlayout.c b/src/H5Dlayout.c index b882578..e257140 100644 --- a/src/H5Dlayout.c +++ b/src/H5Dlayout.c @@ -559,10 +559,12 @@ H5D__layout_oh_create(H5F_t *file, H5O_t *oh, H5D_t *dset, hid_t dapl_id) } /* end if */ /* Create layout message */ - /* (Don't make layout message constant unless allocation time is early and non-filtered, since space may not be allocated) */ + /* (Don't make layout message constant unless allocation time is early and + * non-filtered and has >0 elements, since space may not be allocated -QAK) */ /* (Note: this is relying on H5D__alloc_storage not calling H5O_msg_write during dataset creation) */ if(fill_prop->alloc_time == H5D_ALLOC_TIME_EARLY && H5D_COMPACT != layout->type - && !dset->shared->dcpl_cache.pline.nused) + && !dset->shared->dcpl_cache.pline.nused + && (0 != H5S_GET_EXTENT_NPOINTS(dset->shared->space))) layout_mesg_flags = H5O_MSG_FLAG_CONSTANT; else layout_mesg_flags = 0; |