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