diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2004-07-30 03:34:17 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2004-07-30 03:34:17 (GMT) |
commit | 2f28978053f06739f65b1b2d5f4f5435392c07d0 (patch) | |
tree | fc6abd6d0e7c88b5413774c6cf92aea582ae23df /src/H5Distore.c | |
parent | fab82e54da0648d6cbf7b770265819b04e70da1b (diff) | |
download | hdf5-2f28978053f06739f65b1b2d5f4f5435392c07d0.zip hdf5-2f28978053f06739f65b1b2d5f4f5435392c07d0.tar.gz hdf5-2f28978053f06739f65b1b2d5f4f5435392c07d0.tar.bz2 |
[svn-r8970] Purpose:
Bug fix.
Description:
Address two problems:
- The computation of the scanline in the szip filter was being
performed in the "can apply" callback routine instead of the
"set local" routine.
- The routine which allocated all the chunks for an entire dataset
(which is invoked when the allocation time is early or late,
rather than incremental) wasn't recording a failed filter in
the information for the chunk, causing the library to believe
that the chunk had the filter applied when it really hadn't.
Solution:
- Move the scanline computation to the "set local" callback.
- Record the filter mask with each chunk created when allocating them.
Platforms tested:
FreeBSD 4.10 (sleipnir) w/szip
Too obscure to require h5committest
Diffstat (limited to 'src/H5Distore.c')
-rw-r--r-- | src/H5Distore.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/H5Distore.c b/src/H5Distore.c index 73b7dc7..a1c19c6 100644 --- a/src/H5Distore.c +++ b/src/H5Distore.c @@ -2336,6 +2336,7 @@ H5D_istore_allocate(H5F_t *f, hid_t dxpl_id, const H5D_t *dset, { hssize_t chunk_offset[H5O_LAYOUT_NDIMS]; /* Offset of current chunk */ hsize_t chunk_size; /* Size of chunk in bytes */ + unsigned filter_mask=0; /* Filter mask for chunks that have them */ H5O_pline_t pline; /* I/O pipeline information */ H5O_fill_t fill; /* Fill value information */ H5D_fill_time_t fill_time; /* When to write fill values */ @@ -2457,7 +2458,6 @@ H5D_istore_allocate(H5F_t *f, hid_t dxpl_id, const H5D_t *dset, /* Check if there are filters which need to be applied to the chunk */ if (pline.nused>0) { - unsigned filter_mask=0; size_t buf_size=(size_t)chunk_size; size_t nbytes=(size_t)chunk_size; @@ -2496,7 +2496,7 @@ H5D_istore_allocate(H5F_t *f, hid_t dxpl_id, const H5D_t *dset, if(!chunk_exists) { /* Initialize the chunk information */ udata.mesg = &dset->layout; - udata.key.filter_mask = 0; + udata.key.filter_mask = filter_mask; udata.addr = HADDR_UNDEF; H5_CHECK_OVERFLOW(chunk_size,hsize_t,size_t); udata.key.nbytes = (size_t)chunk_size; |