diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2012-03-13 04:19:46 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2012-03-13 04:19:46 (GMT) |
commit | c17a5d1278a43efc8b62c718f5897e4ec1ed82e9 (patch) | |
tree | ecbb6277dc6e40f442eac1ded3d0e02fd92fef92 /src/H5Dint.c | |
parent | 57295db6c750b6c8d148652b826d3a006f38e6aa (diff) | |
download | hdf5-c17a5d1278a43efc8b62c718f5897e4ec1ed82e9.zip hdf5-c17a5d1278a43efc8b62c718f5897e4ec1ed82e9.tar.gz hdf5-c17a5d1278a43efc8b62c718f5897e4ec1ed82e9.tar.bz2 |
[svn-r22058] Description:
Better fix for zero-sized dataset error (r22053).
Tested on:
Mac OSX/64 10.7.3 (amazon) w/debug & parallel
Diffstat (limited to 'src/H5Dint.c')
-rw-r--r-- | src/H5Dint.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/H5Dint.c b/src/H5Dint.c index f105e0a..9a80bfc 100644 --- a/src/H5Dint.c +++ b/src/H5Dint.c @@ -1596,15 +1596,20 @@ H5D_alloc_storage(H5D_t *dset/*in,out*/, hid_t dxpl_id, H5D_time_alloc_t time_al switch(layout->type) { case H5D_CONTIGUOUS: if(!(*dset->shared->layout.ops->is_space_alloc)(&dset->shared->layout.storage)) { - /* Reserve space in the file for the entire array */ - if(H5D_contig_alloc(f, dxpl_id, &layout->storage.u.contig/*out*/) < 0) - HGOTO_ERROR(H5E_IO, H5E_CANTINIT, FAIL, "unable to initialize contiguous storage") + /* Check if we have a zero-sized dataset */ + if(layout->storage.u.contig.size > 0) { + /* Reserve space in the file for the entire array */ + if(H5D_contig_alloc(f, dxpl_id, &layout->storage.u.contig/*out*/) < 0) + HGOTO_ERROR(H5E_IO, H5E_CANTINIT, FAIL, "unable to initialize contiguous storage") + + /* Indicate that we should initialize storage space */ + must_init_space = TRUE; + } /* end if */ + else + layout->storage.u.contig.addr = HADDR_UNDEF; /* Indicate that we set the storage addr */ addr_set = TRUE; - - /* Indicate that we should initialize storage space */ - must_init_space = TRUE; } /* end if */ break; |