summaryrefslogtreecommitdiffstats
path: root/src/H5Distore.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2004-07-30 03:34:15 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2004-07-30 03:34:15 (GMT)
commitc4015e03e5a7bdd0331d9a547bac2a2a94098ab9 (patch)
tree48f555c8e85d98d1f72c059bd34400cf22cc6bb2 /src/H5Distore.c
parentabf5d5cf60cea890a9efb1260abfeecb14cbc655 (diff)
downloadhdf5-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.c4
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;