diff options
Diffstat (limited to 'src/H5Ocont.c')
-rw-r--r-- | src/H5Ocont.c | 53 |
1 files changed, 42 insertions, 11 deletions
diff --git a/src/H5Ocont.c b/src/H5Ocont.c index afa5ab7..f471c61 100644 --- a/src/H5Ocont.c +++ b/src/H5Ocont.c @@ -23,25 +23,24 @@ * the H5O package. Therefore, do not change * any definitions in this file! * - * Modifications: - * *------------------------------------------------------------------------- */ #define H5O_PACKAGE /*suppress error about including H5Opkg */ -#include "H5private.h" -#include "H5Eprivate.h" +#include "H5private.h" /* Generic Functions */ +#include "H5Eprivate.h" /* Error handling */ #include "H5FLprivate.h" /* Free Lists */ -#include "H5MMprivate.h" -#include "H5Opkg.h" /* Object header functions */ +#include "H5MFprivate.h" /* File memory management */ +#include "H5Opkg.h" /* Object headers */ /* PRIVATE PROTOTYPES */ -static void *H5O_cont_decode(H5F_t *f, hid_t dxpl_id, const uint8_t *p, H5O_shared_t *sh); +static void *H5O_cont_decode(H5F_t *f, hid_t dxpl_id, const uint8_t *p); static herr_t H5O_cont_encode(H5F_t *f, uint8_t *p, const void *_mesg); static size_t H5O_cont_size(const H5F_t *f, const void *_mesg); static herr_t H5O_cont_free(void *mesg); +static herr_t H5O_cont_delete(H5F_t *f, hid_t dxpl_id, const void *_mesg, hbool_t adj_link); static void *H5O_cont_copy_file(H5F_t *file_src, void *mesg_src, H5F_t *file_dst, hid_t dxpl_id, H5SL_t *map_list, void *udata); static herr_t H5O_cont_debug(H5F_t *f, hid_t dxpl_id, const void *_mesg, FILE * stream, @@ -58,7 +57,7 @@ const H5O_class_t H5O_CONT[1] = {{ H5O_cont_size, /*size of header continuation */ NULL, /*reset method */ H5O_cont_free, /* free method */ - NULL, /* file delete method */ + H5O_cont_delete, /* file delete method */ NULL, /* link method */ NULL, /*get share method */ NULL, /*set share method */ @@ -89,7 +88,7 @@ H5FL_DEFINE(H5O_cont_t); *------------------------------------------------------------------------- */ static void * -H5O_cont_decode(H5F_t *f, hid_t UNUSED dxpl_id, const uint8_t *p, H5O_shared_t UNUSED *sh) +H5O_cont_decode(H5F_t *f, hid_t UNUSED dxpl_id, const uint8_t *p) { H5O_cont_t *cont = NULL; void *ret_value; @@ -99,7 +98,6 @@ H5O_cont_decode(H5F_t *f, hid_t UNUSED dxpl_id, const uint8_t *p, H5O_shared_t U /* check args */ assert(f); assert(p); - assert (!sh); /* decode */ if (NULL==(cont = H5FL_MALLOC(H5O_cont_t))) @@ -213,6 +211,39 @@ H5O_cont_free (void *mesg) /*------------------------------------------------------------------------- + * Function: H5O_cont_delete + * + * Purpose: Free file space referenced by message + * + * Return: Non-negative on success/Negative on failure + * + * Programmer: Quincey Koziol + * Monday, October 10, 2005 + * + *------------------------------------------------------------------------- + */ +static herr_t +H5O_cont_delete(H5F_t *f, hid_t dxpl_id, const void *_mesg, hbool_t UNUSED adj_link) +{ + const H5O_cont_t *mesg = (const H5O_cont_t *) _mesg; + herr_t ret_value = SUCCEED; /* Return value */ + + FUNC_ENTER_NOAPI_NOINIT(H5O_cont_delete) + + /* check args */ + HDassert(f); + HDassert(mesg); + + /* Release space for chunk */ + if(H5MF_xfree(f, H5FD_MEM_OHDR, dxpl_id, mesg->addr, (hsize_t)mesg->size) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTFREE, FAIL, "unable to free object header chunk") + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5O_cont_delete() */ + + +/*------------------------------------------------------------------------- * Function: H5O_cont_copy_file * * Purpose: Copies a continuation block message from _MESG to _DEST in file @@ -228,7 +259,7 @@ H5O_cont_free (void *mesg) */ static void * H5O_cont_copy_file(H5F_t UNUSED *file_src, void *mesg_src, - H5F_t *file_dst, hid_t UNUSED dxpl_id, H5SL_t UNUSED *map_list, void *udata) + H5F_t UNUSED *file_dst, hid_t UNUSED dxpl_id, H5SL_t UNUSED *map_list, void *udata) { H5O_cont_t *cont_src = (H5O_cont_t *) mesg_src; H5O_chunk_t *chunk = (H5O_chunk_t *)udata; |