summaryrefslogtreecommitdiffstats
path: root/src/H5Ocache.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2009-01-31 18:19:49 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2009-01-31 18:19:49 (GMT)
commit2d74d46d3fe259ed51b2b996b56559563999e852 (patch)
treefaff172323e140a2446f90e935589708f9bd0830 /src/H5Ocache.c
parent7191f26717255667e86c86559ffc316f73f4c1bd (diff)
downloadhdf5-2d74d46d3fe259ed51b2b996b56559563999e852.zip
hdf5-2d74d46d3fe259ed51b2b996b56559563999e852.tar.gz
hdf5-2d74d46d3fe259ed51b2b996b56559563999e852.tar.bz2
[svn-r16392] Description:
Bring r16367:16391 back from trunk into revise_chunks branch. Tested on: FreeBSD 6.3/32 (duty) (h5committest not required on this branch)
Diffstat (limited to 'src/H5Ocache.c')
-rw-r--r--src/H5Ocache.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/H5Ocache.c b/src/H5Ocache.c
index e5a772f..db093a4 100644
--- a/src/H5Ocache.c
+++ b/src/H5Ocache.c
@@ -880,12 +880,21 @@ HDfprintf(stderr, "%s: oh->cache_info.free_file_space_on_destroy = %t\n", FUNC,
/* destroy messages */
if(oh->mesg) {
for(u = 0; u < oh->nmesgs; u++) {
- /* Verify that message is clean */
- HDassert(oh->mesg[u].dirty == 0);
+ /* Verify that message is clean, unless it could have been marked
+ * dirty by decoding */
+#ifndef NDEBUG
+ if(oh->ndecode_dirtied && oh->mesg[u].dirty)
+ oh->ndecode_dirtied--;
+ else
+ HDassert(oh->mesg[u].dirty == 0);
+#endif /* NDEBUG */
H5O_msg_free_mesg(&oh->mesg[u]);
} /* end for */
+ /* Make sure we accounted for all the messages dirtied by decoding */
+ HDassert(!oh->ndecode_dirtied);
+
oh->mesg = (H5O_mesg_t *)H5FL_SEQ_FREE(H5O_mesg_t, oh->mesg);
} /* end if */
@@ -929,6 +938,11 @@ H5O_clear(H5F_t *f, H5O_t *oh, hbool_t destroy)
for(u = 0; u < oh->nmesgs; u++)
oh->mesg[u].dirty = FALSE;
+#ifndef NDEBUG
+ /* Reset the number of messages dirtied by decoding */
+ oh->ndecode_dirtied = 0;
+#endif /* NDEBUG */
+
/* Mark whole header as clean */
oh->cache_info.is_dirty = FALSE;