diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2004-07-30 03:34:15 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2004-07-30 03:34:15 (GMT) |
commit | c4015e03e5a7bdd0331d9a547bac2a2a94098ab9 (patch) | |
tree | 48f555c8e85d98d1f72c059bd34400cf22cc6bb2 /src/H5Distore.c | |
parent | abf5d5cf60cea890a9efb1260abfeecb14cbc655 (diff) | |
download | hdf5-c4015e03e5a7bdd0331d9a547bac2a2a94098ab9.zip hdf5-c4015e03e5a7bdd0331d9a547bac2a2a94098ab9.tar.gz hdf5-c4015e03e5a7bdd0331d9a547bac2a2a94098ab9.tar.bz2 |
[svn-r8969] 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 4b7bb0a..756f5a1 100644 --- a/src/H5Distore.c +++ b/src/H5Distore.c @@ -2323,6 +2323,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 */ @@ -2444,7 +2445,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; @@ -2483,7 +2483,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; |