diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2006-07-31 09:54:09 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2006-07-31 09:54:09 (GMT) |
commit | 87449d081d1c99312034d917502f2b6aca2ee60c (patch) | |
tree | d21839e74c6602b9a60ce383207001675b4b5ebd /src/H5HF.c | |
parent | ce859f41bb12e07ecb8dff6a783ca21e782ad6fe (diff) | |
download | hdf5-87449d081d1c99312034d917502f2b6aca2ee60c.zip hdf5-87449d081d1c99312034d917502f2b6aca2ee60c.tar.gz hdf5-87449d081d1c99312034d917502f2b6aca2ee60c.tar.bz2 |
[svn-r12517] Description:
Fix the last scattered bunch of problems with the object deletion code,
which appears to be completely working now (for objects that are stored
within heap blocks - standalone objects aren't implemented yet).
Also, re-work the regression test to speed up some of the existing tests
and add in 100-200 more combinations of tests - overall, its probably even
slower than it was... :-/
Tested:
FreeBSD 4.11 (sleipnir)
Linux 2.4 (chicago)
Mac OS X (amazon)
Diffstat (limited to 'src/H5HF.c')
-rw-r--r-- | src/H5HF.c | 17 |
1 files changed, 14 insertions, 3 deletions
@@ -354,7 +354,7 @@ HDfprintf(stderr, "%s: size = %Zu\n", FUNC, size); hdr = fh->hdr; /* Check if object is large enough to be standalone */ - if(size >= hdr->standalone_size) { + if(size > hdr->standalone_size) { HGOTO_ERROR(H5E_HEAP, H5E_UNSUPPORTED, FAIL, "standalone blocks not supported yet") } /* end if */ else { @@ -582,8 +582,19 @@ H5HF_close(H5HF_t *fh, hid_t dxpl_id) * a reference loop and the objects couldn't be removed from * the metadata cache - QAK) */ - if(H5HF_man_iter_reset(&fh->hdr->next_block) < 0) - HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't reset block iterator") +#ifdef QAK +HDfprintf(stderr, "%s; fh->hdr->man_iter_off = %Hu\n", FUNC, fh->hdr->man_iter_off); +HDfprintf(stderr, "%s; fh->hdr->man_size = %Hu\n", FUNC, fh->hdr->man_size); +HDfprintf(stderr, "%s; fh->hdr->rc = %Zu\n", FUNC, fh->hdr->rc); +#endif /* QAK */ + /* Reset block iterator, if necessary */ + if(H5HF_man_iter_ready(&fh->hdr->next_block)) { + if(H5HF_man_iter_reset(&fh->hdr->next_block) < 0) + HGOTO_ERROR(H5E_HEAP, H5E_CANTRELEASE, FAIL, "can't reset block iterator") + } /* end if */ +#ifdef QAK +HDfprintf(stderr, "%s; After iterator reset fh->hdr->rc = %Zu\n", FUNC, fh->hdr->rc); +#endif /* QAK */ /* Decrement the reference count on the heap header */ if(H5HF_hdr_decr(fh->hdr) < 0) |