summaryrefslogtreecommitdiffstats
path: root/src/H5Oalloc.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2007-08-14 04:56:54 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2007-08-14 04:56:54 (GMT)
commitabd36a6f6ed8a19c2253209dd2f2632c1df34a29 (patch)
treef3f7266f36155570d26778cc18a694097078bc99 /src/H5Oalloc.c
parent7e654daa4689f82960e259271085342a74660e90 (diff)
downloadhdf5-abd36a6f6ed8a19c2253209dd2f2632c1df34a29.zip
hdf5-abd36a6f6ed8a19c2253209dd2f2632c1df34a29.tar.gz
hdf5-abd36a6f6ed8a19c2253209dd2f2632c1df34a29.tar.bz2
[svn-r14082] Description:
Fix bug with moving object header messages forward into null messages of exactly the same size and located in an object header chunk with a gap. (Exposed by netCDF-4 test) Tested on: FreeBSD/32 6.2 (duty)
Diffstat (limited to 'src/H5Oalloc.c')
-rw-r--r--src/H5Oalloc.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/H5Oalloc.c b/src/H5Oalloc.c
index ae07294..d5f17e0 100644
--- a/src/H5Oalloc.c
+++ b/src/H5Oalloc.c
@@ -1216,6 +1216,18 @@ H5O_move_msgs_forward(H5O_t *oh)
/* Mark null message dirty */
null_msg->dirty = TRUE;
+
+ /* Check for gap in null message's chunk */
+ if(oh->chunk[old_chunkno].gap > 0) {
+ /* Eliminate the gap in the chunk */
+ if(H5O_eliminate_gap(oh, null_msg,
+ ((oh->chunk[old_chunkno].image + oh->chunk[old_chunkno].size) - (H5O_SIZEOF_CHKSUM_OH(oh) + oh->chunk[old_chunkno].gap)),
+ oh->chunk[old_chunkno].gap) < 0)
+ HGOTO_ERROR(H5E_OHDR, H5E_CANTREMOVE, FAIL, "can't eliminate gap in chunk")
+
+ /* Set the gap size to zero for the chunk */
+ oh->chunk[old_chunkno].gap = 0;
+ } /* end if */
} /* end if */
else {
unsigned new_null_msg; /* Message index for new null message */