mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-13 16:47:58 +08:00
[svn-r23715] Bug Fix: HDFFV-8247
Description: Failure to write fill values to the user's buffer when reading unallocated chunks from datasets that have a fill value set to H5D_FILL_VALUE_DEFAULT. A consequence of this was the reporting of spurious data values in h5dump and h5diff output. Solution: Added check for fill value of H5D_FILL_VALUE_DEFAULT whenever fill value setting was checked to decide whether or not to fill. This effectively treats H5D_FILL_VALUE_DEFAULT the same as H5D_FILL_VALUE_USER rather than H5D_FILL_VALUE_UNDEFINED. Tested: h5committest (platypus, ostrich, jam-pp, koala) ran successfully (fillval test was modified to reveal and check for this error) Note: RELEASE.txt was previously changed to reflect this fix. This checkin was of a cleaner version of the code, but mostly to get this full log message entered. -This line, and those below, will be ignored-- M H5Dchunk.c
This commit is contained in:
parent
424a41f878
commit
8cc6ceb4e3
@ -1797,8 +1797,9 @@ H5D__chunk_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info,
|
||||
* but they aren't set, set the flag to skip missing chunks.
|
||||
*/
|
||||
if(fill->fill_time == H5D_FILL_TIME_NEVER ||
|
||||
(fill->fill_time == H5D_FILL_TIME_IFSET && fill_status != H5D_FILL_VALUE_USER_DEFINED &&
|
||||
fill_status != H5D_FILL_VALUE_DEFAULT))
|
||||
(fill->fill_time == H5D_FILL_TIME_IFSET &&
|
||||
fill_status != H5D_FILL_VALUE_USER_DEFINED &&
|
||||
fill_status != H5D_FILL_VALUE_DEFAULT))
|
||||
skip_missing_chunks = TRUE;
|
||||
}
|
||||
|
||||
@ -2889,7 +2890,9 @@ H5D__chunk_lock(const H5D_io_info_t *io_info, H5D_chunk_ud_t *udata,
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't tell if fill value defined")
|
||||
|
||||
if(fill->fill_time == H5D_FILL_TIME_ALLOC ||
|
||||
(fill->fill_time == H5D_FILL_TIME_IFSET && fill_status == H5D_FILL_VALUE_USER_DEFINED)) {
|
||||
(fill->fill_time == H5D_FILL_TIME_IFSET &&
|
||||
(fill_status == H5D_FILL_VALUE_USER_DEFINED ||
|
||||
fill_status == H5D_FILL_VALUE_DEFAULT))) {
|
||||
/*
|
||||
* The chunk doesn't exist in the file. Replicate the fill
|
||||
* value throughout the chunk, if the fill value is defined.
|
||||
@ -3314,7 +3317,9 @@ H5D__chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
|
||||
* set the "should fill" flag
|
||||
*/
|
||||
if((!full_overwrite && (fill->fill_time == H5D_FILL_TIME_ALLOC ||
|
||||
(fill->fill_time == H5D_FILL_TIME_IFSET && fill_status == H5D_FILL_VALUE_USER_DEFINED)))
|
||||
(fill->fill_time == H5D_FILL_TIME_IFSET &&
|
||||
(fill_status == H5D_FILL_VALUE_USER_DEFINED ||
|
||||
fill_status == H5D_FILL_VALUE_DEFAULT))))
|
||||
|| pline->nused > 0)
|
||||
should_fill = TRUE;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user