diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2009-01-31 18:19:49 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2009-01-31 18:19:49 (GMT) |
commit | 2d74d46d3fe259ed51b2b996b56559563999e852 (patch) | |
tree | faff172323e140a2446f90e935589708f9bd0830 /src/H5Ocache.c | |
parent | 7191f26717255667e86c86559ffc316f73f4c1bd (diff) | |
download | hdf5-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.c | 18 |
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; |