diff --git a/.github/workflows/analysis.yml b/.github/workflows/analysis.yml index 6260643a4da..d3a04488d0b 100644 --- a/.github/workflows/analysis.yml +++ b/.github/workflows/analysis.yml @@ -414,6 +414,7 @@ jobs: set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_JAVA:BOOL=OFF") set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_CPP_LIB:BOOL=ON") set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_FORTRAN:BOOL=OFF") + set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_NONSTANDARD_FEATURE_FLOAT16:BOOL=OFF") set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SANITIZERS:BOOL=ON") set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_USE_SANITIZER:STRING=Undefined") set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_ZLIB_SUPPORT:BOOL=OFF") diff --git a/src/H5Aint.c b/src/H5Aint.c index b65d014add2..c58fde69e98 100644 --- a/src/H5Aint.c +++ b/src/H5Aint.c @@ -72,7 +72,7 @@ typedef struct { /* Local Prototypes */ /********************/ -static herr_t H5A__close_cb(H5VL_object_t *attr_vol_obj, void **request); +static herr_t H5A__close_cb(void *attr_vol_obj, void **request); static herr_t H5A__compact_build_table_cb(H5O_t *oh, H5O_mesg_t *mesg /*in,out*/, unsigned sequence, void *_udata /*in,out*/); static herr_t H5A__dense_build_table_cb(const H5A_t *attr, void *_udata); @@ -124,10 +124,10 @@ H5FL_SEQ_DEFINE_STATIC(H5A_t_ptr); /* Attribute ID class */ static const H5I_class_t H5I_ATTR_CLS[1] = {{ - H5I_ATTR, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5A__close_cb /* Callback routine for closing objects of this class */ + H5I_ATTR, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5A__close_cb /* Callback routine for closing objects of this class */ }}; /* Flag indicating "top" of interface has been initialized */ @@ -1277,21 +1277,22 @@ H5A__shared_free(H5A_t *attr) *------------------------------------------------------------------------- */ static herr_t -H5A__close_cb(H5VL_object_t *attr_vol_obj, void **request) +H5A__close_cb(void *attr_vol_obj, void **request) { - herr_t ret_value = SUCCEED; /* Return value */ + H5VL_object_t *attr_vol_obj_p = (H5VL_object_t *)attr_vol_obj; + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE /* Sanity check */ - assert(attr_vol_obj); + assert(attr_vol_obj_p); /* Close the attribute */ - if (H5VL_attr_close(attr_vol_obj, H5P_DATASET_XFER_DEFAULT, request) < 0) + if (H5VL_attr_close(attr_vol_obj_p, H5P_DATASET_XFER_DEFAULT, request) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CLOSEERROR, FAIL, "problem closing attribute"); /* Free the VOL object */ - if (H5VL_free_object(attr_vol_obj) < 0) + if (H5VL_free_object(attr_vol_obj_p) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTDEC, FAIL, "unable to free VOL object"); done: diff --git a/src/H5Dint.c b/src/H5Dint.c index f277677bc48..94c9a4325a8 100644 --- a/src/H5Dint.c +++ b/src/H5Dint.c @@ -84,7 +84,7 @@ static herr_t H5D__build_file_prefix(const H5D_t *dset, H5F_prefix_open_t prefix static herr_t H5D__open_oid(H5D_t *dataset, hid_t dapl_id); static herr_t H5D__init_storage(H5D_t *dset, bool full_overwrite, hsize_t old_dim[]); static herr_t H5D__append_flush_setup(H5D_t *dset, hid_t dapl_id); -static herr_t H5D__close_cb(H5VL_object_t *dset_vol_obj, void **request); +static herr_t H5D__close_cb(void *dset_vol_obj, void **request); static herr_t H5D__use_minimized_dset_headers(H5F_t *file, bool *minimize); static herr_t H5D__prepare_minimized_oh(H5F_t *file, H5D_t *dset, H5O_loc_t *oloc); static size_t H5D__calculate_minimum_header_size(H5F_t *file, H5D_t *dset, H5O_t *ohdr); @@ -133,10 +133,10 @@ H5_WARN_LARGE_STACK_OBJECTS_ON /* Dataset ID class */ static const H5I_class_t H5I_DATASET_CLS[1] = {{ - H5I_DATASET, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5D__close_cb /* Callback routine for closing objects of this class */ + H5I_DATASET, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5D__close_cb /* Callback routine for closing objects of this class */ }}; /* Flag indicating "top" of interface has been initialized */ @@ -332,22 +332,23 @@ H5D_term_package(void) *------------------------------------------------------------------------- */ static herr_t -H5D__close_cb(H5VL_object_t *dset_vol_obj, void **request) +H5D__close_cb(void *dset_vol_obj, void **request) { - herr_t ret_value = SUCCEED; /* Return value */ + H5VL_object_t *dset_vol_obj_p = (H5VL_object_t *)dset_vol_obj; + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE /* Sanity check */ - assert(dset_vol_obj); + assert(dset_vol_obj_p); /* Close the dataset */ - if (H5VL_dataset_close(dset_vol_obj, H5P_DATASET_XFER_DEFAULT, request) < 0) + if (H5VL_dataset_close(dset_vol_obj_p, H5P_DATASET_XFER_DEFAULT, request) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CLOSEERROR, FAIL, "unable to close dataset"); done: /* Free the VOL object */ - if (H5VL_free_object(dset_vol_obj) < 0) + if (H5VL_free_object(dset_vol_obj_p) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTDEC, FAIL, "unable to free VOL object"); FUNC_LEAVE_NOAPI(ret_value) diff --git a/src/H5Dscatgath.c b/src/H5Dscatgath.c index 56b556615a8..5e7822c229d 100644 --- a/src/H5Dscatgath.c +++ b/src/H5Dscatgath.c @@ -1264,12 +1264,21 @@ H5D__scatgath_write_select(H5D_io_info_t *io_info) if ((H5T_BKG_YES == dset_info->type_info.need_bkg) && !H5D__SCATGATH_USE_CMPD_OPT_WRITE(dset_info, io_info->sel_pieces[i]->in_place_tconv)) { - /* Non-const write_buf[i]. Use pointer math here to avoid const warnings. When - * there's a background buffer write_buf[i] always points inside the non-const tconv - * buf so this is OK. */ - void *tmp_write_buf = - (void *)((uint8_t *)io_info->tconv_buf + - ((const uint8_t *)write_bufs[i] - (const uint8_t *)io_info->tconv_buf)); + void *tmp_write_buf; + + if (io_info->sel_pieces[i]->in_place_tconv) { + H5_flexible_const_ptr_t flex_buf = {.cvp = write_bufs[i]}; + + tmp_write_buf = flex_buf.vp; + } + else { + /* Non-const write_buf[i]. Use pointer math here to avoid const warnings. When + * there's a background buffer write_buf[i] always points inside the non-const tconv + * buf so this is OK. */ + tmp_write_buf = + (void *)((uint8_t *)io_info->tconv_buf + + ((const uint8_t *)write_bufs[i] - (const uint8_t *)io_info->tconv_buf)); + } /* Do the data transform before the type conversion (since * transforms must be done in the memory type). */ diff --git a/src/H5EA.c b/src/H5EA.c index 09258449a4c..9bbd9d46fe0 100644 --- a/src/H5EA.c +++ b/src/H5EA.c @@ -340,7 +340,7 @@ H5EA__lookup_elmt(const H5EA_t *ea, hsize_t idx, bool will_extend, unsigned thin *thing = NULL; *thing_elmt_buf = NULL; *thing_elmt_idx = 0; - *thing_unprot_func = (H5EA__unprotect_func_t)NULL; + *thing_unprot_func = NULL; /* Check if we should create the index block */ if (!H5_addr_defined(hdr->idx_blk_addr)) { @@ -368,7 +368,7 @@ H5EA__lookup_elmt(const H5EA_t *ea, hsize_t idx, bool will_extend, unsigned thin *thing = iblock; *thing_elmt_buf = (uint8_t *)iblock->elmts; *thing_elmt_idx = idx; - *thing_unprot_func = (H5EA__unprotect_func_t)H5EA__iblock_unprotect; + *thing_unprot_func = H5EA__iblock_unprotect; } /* end if */ else { unsigned sblk_idx; /* Which superblock does this index fall in? */ @@ -436,7 +436,7 @@ H5EA__lookup_elmt(const H5EA_t *ea, hsize_t idx, bool will_extend, unsigned thin *thing = dblock; *thing_elmt_buf = (uint8_t *)dblock->elmts; *thing_elmt_idx = elmt_idx; - *thing_unprot_func = (H5EA__unprotect_func_t)H5EA__dblock_unprotect; + *thing_unprot_func = H5EA__dblock_unprotect; } /* end if */ else { size_t sblk_off; /* Offset of super block in index block array of super blocks */ @@ -569,7 +569,7 @@ H5EA__lookup_elmt(const H5EA_t *ea, hsize_t idx, bool will_extend, unsigned thin *thing = dblk_page; *thing_elmt_buf = (uint8_t *)dblk_page->elmts; *thing_elmt_idx = elmt_idx; - *thing_unprot_func = (H5EA__unprotect_func_t)H5EA__dblk_page_unprotect; + *thing_unprot_func = H5EA__dblk_page_unprotect; } /* end if */ else { /* Protect data block */ @@ -593,7 +593,7 @@ H5EA__lookup_elmt(const H5EA_t *ea, hsize_t idx, bool will_extend, unsigned thin *thing = dblock; *thing_elmt_buf = (uint8_t *)dblock->elmts; *thing_elmt_idx = elmt_idx; - *thing_unprot_func = (H5EA__unprotect_func_t)H5EA__dblock_unprotect; + *thing_unprot_func = H5EA__dblock_unprotect; } /* end else */ } /* end else */ } /* end else */ @@ -608,7 +608,7 @@ H5EA__lookup_elmt(const H5EA_t *ea, hsize_t idx, bool will_extend, unsigned thin *thing = NULL; *thing_elmt_buf = NULL; *thing_elmt_idx = 0; - *thing_unprot_func = (H5EA__unprotect_func_t)NULL; + *thing_unprot_func = NULL; } /* end if */ /* Check for updating array statistics */ diff --git a/src/H5EAdblkpage.c b/src/H5EAdblkpage.c index a18dbcc4e70..0bb9d354ff6 100644 --- a/src/H5EAdblkpage.c +++ b/src/H5EAdblkpage.c @@ -257,9 +257,10 @@ H5EA__dblk_page_protect(H5EA_hdr_t *hdr, H5EA_sblock_t *parent, haddr_t dblk_pag *------------------------------------------------------------------------- */ herr_t -H5EA__dblk_page_unprotect(H5EA_dblk_page_t *dblk_page, unsigned cache_flags) +H5EA__dblk_page_unprotect(void *_dblk_page, unsigned cache_flags) { - herr_t ret_value = SUCCEED; + H5EA_dblk_page_t *dblk_page = (H5EA_dblk_page_t *)_dblk_page; + herr_t ret_value = SUCCEED; FUNC_ENTER_PACKAGE diff --git a/src/H5EAdblock.c b/src/H5EAdblock.c index 7b0298b4379..17b04966f44 100644 --- a/src/H5EAdblock.c +++ b/src/H5EAdblock.c @@ -336,9 +336,10 @@ H5EA__dblock_protect(H5EA_hdr_t *hdr, void *parent, haddr_t dblk_addr, size_t db *------------------------------------------------------------------------- */ herr_t -H5EA__dblock_unprotect(H5EA_dblock_t *dblock, unsigned cache_flags) +H5EA__dblock_unprotect(void *_dblock, unsigned cache_flags) { - herr_t ret_value = SUCCEED; + H5EA_dblock_t *dblock = (H5EA_dblock_t *)_dblock; + herr_t ret_value = SUCCEED; FUNC_ENTER_PACKAGE diff --git a/src/H5EAiblock.c b/src/H5EAiblock.c index 4d007153fda..0896a9d42af 100644 --- a/src/H5EAiblock.c +++ b/src/H5EAiblock.c @@ -324,9 +324,10 @@ H5EA__iblock_protect(H5EA_hdr_t *hdr, unsigned flags) *------------------------------------------------------------------------- */ herr_t -H5EA__iblock_unprotect(H5EA_iblock_t *iblock, unsigned cache_flags) +H5EA__iblock_unprotect(void *_iblock, unsigned cache_flags) { - herr_t ret_value = SUCCEED; + H5EA_iblock_t *iblock = (H5EA_iblock_t *)_iblock; + herr_t ret_value = SUCCEED; FUNC_ENTER_PACKAGE diff --git a/src/H5EApkg.h b/src/H5EApkg.h index 5bcb823e17f..e73ba8af462 100644 --- a/src/H5EApkg.h +++ b/src/H5EApkg.h @@ -406,7 +406,7 @@ H5_DLL herr_t H5EA__hdr_dest(H5EA_hdr_t *hdr); H5_DLL H5EA_iblock_t *H5EA__iblock_alloc(H5EA_hdr_t *hdr); H5_DLL haddr_t H5EA__iblock_create(H5EA_hdr_t *hdr, bool *stats_changed); H5_DLL H5EA_iblock_t *H5EA__iblock_protect(H5EA_hdr_t *hdr, unsigned flags); -H5_DLL herr_t H5EA__iblock_unprotect(H5EA_iblock_t *iblock, unsigned cache_flags); +H5_DLL herr_t H5EA__iblock_unprotect(void *_iblock, unsigned cache_flags); H5_DLL herr_t H5EA__iblock_delete(H5EA_hdr_t *hdr); H5_DLL herr_t H5EA__iblock_dest(H5EA_iblock_t *iblock); @@ -428,7 +428,7 @@ H5_DLL haddr_t H5EA__dblock_create(H5EA_hdr_t *hdr, void *parent, bool *stats_c H5_DLL unsigned H5EA__dblock_sblk_idx(const H5EA_hdr_t *hdr, hsize_t idx); H5_DLL H5EA_dblock_t *H5EA__dblock_protect(H5EA_hdr_t *hdr, void *parent, haddr_t dblk_addr, size_t dblk_nelmts, unsigned flags); -H5_DLL herr_t H5EA__dblock_unprotect(H5EA_dblock_t *dblock, unsigned cache_flags); +H5_DLL herr_t H5EA__dblock_unprotect(void *_dblock, unsigned cache_flags); H5_DLL herr_t H5EA__dblock_delete(H5EA_hdr_t *hdr, void *parent, haddr_t dblk_addr, size_t dblk_nelmts); H5_DLL herr_t H5EA__dblock_dest(H5EA_dblock_t *dblock); @@ -437,7 +437,7 @@ H5_DLL H5EA_dblk_page_t *H5EA__dblk_page_alloc(H5EA_hdr_t *hdr, H5EA_sblock_t *p H5_DLL herr_t H5EA__dblk_page_create(H5EA_hdr_t *hdr, H5EA_sblock_t *parent, haddr_t addr); H5_DLL H5EA_dblk_page_t *H5EA__dblk_page_protect(H5EA_hdr_t *hdr, H5EA_sblock_t *parent, haddr_t dblk_page_addr, unsigned flags); -H5_DLL herr_t H5EA__dblk_page_unprotect(H5EA_dblk_page_t *dblk_page, unsigned cache_flags); +H5_DLL herr_t H5EA__dblk_page_unprotect(void *_dblk_page, unsigned cache_flags); H5_DLL herr_t H5EA__dblk_page_dest(H5EA_dblk_page_t *dblk_page); /* Debugging routines for dumping file structures */ diff --git a/src/H5ESint.c b/src/H5ESint.c index 655fb818c04..e15a4cfa122 100644 --- a/src/H5ESint.c +++ b/src/H5ESint.c @@ -116,10 +116,10 @@ bool H5_PKG_INIT_VAR = false; /* Event Set ID class */ static const H5I_class_t H5I_EVENTSET_CLS[1] = {{ - H5I_EVENTSET, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5ES__close_cb /* Callback routine for closing objects of this class */ + H5I_EVENTSET, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5ES__close_cb /* Callback routine for closing objects of this class */ }}; /* Declare a static free list to manage H5ES_t structs */ diff --git a/src/H5Eint.c b/src/H5Eint.c index f3059b4893c..491684613b6 100644 --- a/src/H5Eint.c +++ b/src/H5Eint.c @@ -68,11 +68,11 @@ static herr_t H5E__copy_stack_entry(H5E_entry_t *dst_entry, const H5E_entry_t *s static herr_t H5E__set_stack_entry(H5E_error2_t *err_entry, const char *file, const char *func, unsigned line, hid_t cls_id, hid_t maj_id, hid_t min_id, const char *desc, va_list *ap); static herr_t H5E__clear_entries(H5E_stack_t *estack, size_t nentries); -static herr_t H5E__unregister_class(H5E_cls_t *cls, void **request); +static herr_t H5E__unregister_class(void *cls, void **request); static int H5E__close_msg_cb(void *obj_ptr, hid_t obj_id, void *udata); static void H5E__free_msg(H5E_msg_t *msg); -static herr_t H5E__close_msg(H5E_msg_t *err, void **request); -static herr_t H5E__close_stack(H5E_stack_t *err_stack, void **request); +static herr_t H5E__close_msg(void *err, void **request); +static herr_t H5E__close_stack(void *err_stack, void **request); /*********************/ /* Package Variables */ @@ -174,26 +174,26 @@ hid_t H5E_last_min_id_g = H5I_INVALID_HID; /* Error class ID class */ static const H5I_class_t H5I_ERRCLS_CLS[1] = {{ - H5I_ERROR_CLASS, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5E__unregister_class /* Callback routine for closing objects of this class */ + H5I_ERROR_CLASS, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5E__unregister_class /* Callback routine for closing objects of this class */ }}; /* Error message ID class */ static const H5I_class_t H5I_ERRMSG_CLS[1] = {{ - H5I_ERROR_MSG, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5E__close_msg /* Callback routine for closing objects of this class */ + H5I_ERROR_MSG, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5E__close_msg /* Callback routine for closing objects of this class */ }}; /* Error stack ID class */ static const H5I_class_t H5I_ERRSTK_CLS[1] = {{ - H5I_ERROR_STACK, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5E__close_stack /* Callback routine for closing objects of this class */ + H5I_ERROR_STACK, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5E__close_stack /* Callback routine for closing objects of this class */ }}; /* Library's error class */ @@ -519,21 +519,22 @@ H5E__register_class(const char *cls_name, const char *lib_name, const char *vers *------------------------------------------------------------------------- */ static herr_t -H5E__unregister_class(H5E_cls_t *cls, void H5_ATTR_UNUSED **request) +H5E__unregister_class(void *cls, void H5_ATTR_UNUSED **request) { - herr_t ret_value = SUCCEED; /* Return value */ + H5E_cls_t *cls_p = (H5E_cls_t *)cls; + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE /* Check arguments */ - assert(cls); + assert(cls_p); /* Iterate over all the messages and delete those in this error class */ - if (H5I_iterate(H5I_ERROR_MSG, H5E__close_msg_cb, cls, false) < 0) + if (H5I_iterate(H5I_ERROR_MSG, H5E__close_msg_cb, cls_p, false) < 0) HGOTO_ERROR(H5E_ERROR, H5E_BADITER, FAIL, "unable to free all messages in this error class"); /* Free error class structure */ - if (H5E__free_class(cls) < 0) + if (H5E__free_class(cls_p) < 0) HGOTO_ERROR(H5E_ERROR, H5E_CANTRELEASE, FAIL, "unable to free error class"); done: @@ -644,17 +645,19 @@ H5E__free_msg(H5E_msg_t *msg) *------------------------------------------------------------------------- */ static herr_t -H5E__close_msg(H5E_msg_t *err, void H5_ATTR_UNUSED **request) +H5E__close_msg(void *err, void H5_ATTR_UNUSED **request) { + H5E_msg_t *err_p = (H5E_msg_t *)err; + FUNC_ENTER_PACKAGE_NOERR /* Check arguments */ - assert(err); + assert(err_p); /* Free resources, if application registered this message */ - if (err->app_msg) + if (err_p->app_msg) /* Free message */ - H5E__free_msg(err); + H5E__free_msg(err_p); FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5E__close_msg() */ @@ -804,18 +807,20 @@ H5E__set_current_stack(H5E_stack_t *estack) *------------------------------------------------------------------------- */ static herr_t -H5E__close_stack(H5E_stack_t *estack, void H5_ATTR_UNUSED **request) +H5E__close_stack(void *estack, void H5_ATTR_UNUSED **request) { + H5E_stack_t *estack_p = (H5E_stack_t *)estack; + FUNC_ENTER_PACKAGE_NOERR /* Sanity check */ - assert(estack); + assert(estack_p); /* Release the stack's error information */ - H5E__destroy_stack(estack); + H5E__destroy_stack(estack_p); /* Free the stack structure */ - estack = H5FL_FREE(H5E_stack_t, estack); + estack_p = H5FL_FREE(H5E_stack_t, estack_p); FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5E__close_stack() */ diff --git a/src/H5FD.c b/src/H5FD.c index 45f3c6d57dc..7a523af28ed 100644 --- a/src/H5FD.c +++ b/src/H5FD.c @@ -52,7 +52,7 @@ /********************/ /* Local Prototypes */ /********************/ -static herr_t H5FD__free_cls(H5FD_class_t *cls, void **request); +static herr_t H5FD__free_cls(void *cls, void **request); static herr_t H5FD__query(const H5FD_t *f, unsigned long *flags /*out*/); /*********************/ @@ -89,10 +89,10 @@ static unsigned long H5FD_file_serial_no_g; /* File driver ID class */ static const H5I_class_t H5I_VFL_CLS[1] = {{ - H5I_VFL, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5FD__free_cls /* Callback routine for closing objects of this class */ + H5I_VFL, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5FD__free_cls /* Callback routine for closing objects of this class */ }}; /*------------------------------------------------------------------------- @@ -283,32 +283,33 @@ H5FD_term_package(void) *------------------------------------------------------------------------- */ static herr_t -H5FD__free_cls(H5FD_class_t *cls, void H5_ATTR_UNUSED **request) +H5FD__free_cls(void *cls, void H5_ATTR_UNUSED **request) { - herr_t ret_value = SUCCEED; + H5FD_class_t *cls_p = (H5FD_class_t *)cls; + herr_t ret_value = SUCCEED; FUNC_ENTER_PACKAGE /* Sanity checks */ - assert(cls); + assert(cls_p); /* If the file driver has a terminate callback, call it to give the file * driver a chance to free singletons or other resources which will become * invalid once the class structure is freed. */ - if (cls->terminate) { + if (cls_p->terminate) { /* Prepare & restore library for user callback */ H5_BEFORE_USER_CB(FAIL) { - ret_value = cls->terminate(); + ret_value = cls_p->terminate(); } H5_AFTER_USER_CB(FAIL) if (ret_value < 0) HGOTO_ERROR(H5E_VFL, H5E_CANTCLOSEOBJ, FAIL, "virtual file driver '%s' did not terminate cleanly", - cls->name); + cls_p->name); } - H5MM_xfree(cls); + H5MM_xfree(cls_p); done: FUNC_LEAVE_NOAPI(ret_value) diff --git a/src/H5Fint.c b/src/H5Fint.c index 1364ed9d89e..0409160dc71 100644 --- a/src/H5Fint.c +++ b/src/H5Fint.c @@ -71,7 +71,7 @@ typedef struct H5F_olist_t { /* Local Prototypes */ /********************/ -static herr_t H5F__close_cb(H5VL_object_t *file_vol_obj, void **request); +static herr_t H5F__close_cb(void *file_vol_obj, void **request); static herr_t H5F__set_vol_conn(H5F_t *file); static herr_t H5F__get_objects(const H5F_t *f, unsigned types, size_t max_index, hid_t *obj_id_list, bool app_ref, size_t *obj_id_count_ptr); @@ -117,10 +117,10 @@ H5FL_DEFINE(H5F_shared_t); /* File ID class */ static const H5I_class_t H5I_FILE_CLS[1] = {{ - H5I_FILE, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5F__close_cb /* Callback routine for closing objects of this class */ + H5I_FILE, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5F__close_cb /* Callback routine for closing objects of this class */ }}; /*------------------------------------------------------------------------- @@ -236,22 +236,23 @@ H5F_term_package(void) *------------------------------------------------------------------------- */ static herr_t -H5F__close_cb(H5VL_object_t *file_vol_obj, void **request) +H5F__close_cb(void *file_vol_obj, void **request) { - herr_t ret_value = SUCCEED; /* Return value */ + H5VL_object_t *file_vol_obj_p = (H5VL_object_t *)file_vol_obj; + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE /* Sanity check */ - assert(file_vol_obj); + assert(file_vol_obj_p); /* Close the file */ - if (H5VL_file_close(file_vol_obj, H5P_DATASET_XFER_DEFAULT, request) < 0) + if (H5VL_file_close(file_vol_obj_p, H5P_DATASET_XFER_DEFAULT, request) < 0) HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "unable to close file"); /* Free the VOL object; it is unnecessary to unwrap the VOL * object before freeing it, as the object was not wrapped */ - if (H5VL_free_object(file_vol_obj) < 0) + if (H5VL_free_object(file_vol_obj_p) < 0) HGOTO_ERROR(H5E_FILE, H5E_CANTDEC, FAIL, "unable to free VOL object"); done: diff --git a/src/H5Gint.c b/src/H5Gint.c index 598658408ce..8d5f9842e15 100644 --- a/src/H5Gint.c +++ b/src/H5Gint.c @@ -84,7 +84,7 @@ typedef struct { static herr_t H5G__open_oid(H5G_t *grp); static herr_t H5G__visit_cb(const H5O_link_t *lnk, void *_udata); -static herr_t H5G__close_cb(H5VL_object_t *grp_vol_obj, void **request); +static herr_t H5G__close_cb(void *grp_vol_obj, void **request); /*********************/ /* Package Variables */ @@ -110,10 +110,10 @@ H5FL_DEFINE(H5_obj_t); /* Group ID class */ static const H5I_class_t H5I_GROUP_CLS[1] = {{ - H5I_GROUP, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5G__close_cb /* Callback routine for closing objects of this class */ + H5I_GROUP, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5G__close_cb /* Callback routine for closing objects of this class */ }}; /* Flag indicating "top" of interface has been initialized */ @@ -257,21 +257,22 @@ H5G_term_package(void) *------------------------------------------------------------------------- */ static herr_t -H5G__close_cb(H5VL_object_t *grp_vol_obj, void **request) +H5G__close_cb(void *grp_vol_obj, void **request) { - herr_t ret_value = SUCCEED; /* Return value */ + H5VL_object_t *grp_vol_obj_p = (H5VL_object_t *)grp_vol_obj; + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE /* Sanity check */ - assert(grp_vol_obj); + assert(grp_vol_obj_p); /* Close the group */ - if (H5VL_group_close(grp_vol_obj, H5P_DATASET_XFER_DEFAULT, request) < 0) + if (H5VL_group_close(grp_vol_obj_p, H5P_DATASET_XFER_DEFAULT, request) < 0) HGOTO_ERROR(H5E_SYM, H5E_CLOSEERROR, FAIL, "unable to close group"); /* Free the VOL object */ - if (H5VL_free_object(grp_vol_obj) < 0) + if (H5VL_free_object(grp_vol_obj_p) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTDEC, FAIL, "unable to free VOL object"); done: diff --git a/src/H5M.c b/src/H5M.c index beea264fea0..0ff69100913 100644 --- a/src/H5M.c +++ b/src/H5M.c @@ -38,7 +38,7 @@ /********************/ /* Local Prototypes */ /********************/ -static herr_t H5M__close_cb(H5VL_object_t *map_vol_obj, void **request); +static herr_t H5M__close_cb(void *map_vol_obj, void **request); #ifdef H5_HAVE_MAP_API static hid_t H5M__create_api_common(hid_t loc_id, const char *name, hid_t key_type_id, hid_t val_type_id, @@ -70,10 +70,10 @@ bool H5_PKG_INIT_VAR = false; /* Map ID class */ static const H5I_class_t H5I_MAP_CLS[1] = {{ - H5I_MAP, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5M__close_cb /* Callback routine for closing objects of this class */ + H5I_MAP, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5M__close_cb /* Callback routine for closing objects of this class */ }}; /* Flag indicating "top" of interface has been initialized */ @@ -207,26 +207,27 @@ H5M_term_package(void) *------------------------------------------------------------------------- */ static herr_t -H5M__close_cb(H5VL_object_t *map_vol_obj, void **request) +H5M__close_cb(void *map_vol_obj, void **request) { - H5VL_optional_args_t vol_cb_args; /* Arguments to VOL callback */ - herr_t ret_value = SUCCEED; /* Return value */ + H5VL_optional_args_t vol_cb_args; /* Arguments to VOL callback */ + H5VL_object_t *map_vol_obj_p = (H5VL_object_t *)map_vol_obj; + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE /* Sanity check */ - assert(map_vol_obj); + assert(map_vol_obj_p); /* Set up VOL callback arguments */ vol_cb_args.op_type = H5VL_MAP_CLOSE; vol_cb_args.args = NULL; /* Close the map */ - if (H5VL_optional(map_vol_obj, &vol_cb_args, H5P_DATASET_XFER_DEFAULT, request) < 0) + if (H5VL_optional(map_vol_obj_p, &vol_cb_args, H5P_DATASET_XFER_DEFAULT, request) < 0) HGOTO_ERROR(H5E_MAP, H5E_CLOSEERROR, FAIL, "unable to close map"); /* Free the VOL object */ - if (H5VL_free_object(map_vol_obj) < 0) + if (H5VL_free_object(map_vol_obj_p) < 0) HGOTO_ERROR(H5E_MAP, H5E_CANTDEC, FAIL, "unable to free VOL object"); done: diff --git a/src/H5Odtype.c b/src/H5Odtype.c index 3273b7a63b7..28c8b904ec6 100644 --- a/src/H5Odtype.c +++ b/src/H5Odtype.c @@ -1490,7 +1490,7 @@ H5O__dtype_decode(H5F_t *f, H5O_t *open_oh, unsigned H5_ATTR_UNUSED mesg_flags, { bool skip; H5T_t *dt = NULL; - const uint8_t *p_end = p + p_size - 1; + const uint8_t *p_end = NULL; void *ret_value = NULL; FUNC_ENTER_PACKAGE @@ -1508,6 +1508,10 @@ H5O__dtype_decode(H5F_t *f, H5O_t *open_oh, unsigned H5_ATTR_UNUSED mesg_flags, * as a signal to skip bounds checking. */ skip = (p_size == SIZE_MAX ? true : false); + if (skip) + p_end = p; + else + p_end = p + p_size - 1; /* Indicate if the object header has a checksum, or if the * H5F_RFIC_UNUSUAL_NUM_UNUSED_NUMERIC_BITS flag is set */ diff --git a/src/H5Pint.c b/src/H5Pint.c index 0cacaf79527..aec4cc71cfa 100644 --- a/src/H5Pint.c +++ b/src/H5Pint.c @@ -393,18 +393,18 @@ H5FL_DEFINE_STATIC(H5P_genplist_t); /* Generic Property Class ID class */ static const H5I_class_t H5I_GENPROPCLS_CLS[1] = {{ - H5I_GENPROP_CLS, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5P__close_class_cb /* Callback routine for closing objects of this class */ + H5I_GENPROP_CLS, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5P__close_class_cb /* Callback routine for closing objects of this class */ }}; /* Generic Property List ID class */ static const H5I_class_t H5I_GENPROPLST_CLS[1] = {{ - H5I_GENPROP_LST, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5P__close_list_cb /* Callback routine for closing objects of this class */ + H5I_GENPROP_LST, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5P__close_list_cb /* Callback routine for closing objects of this class */ }}; /*------------------------------------------------------------------------- diff --git a/src/H5S.c b/src/H5S.c index 789ea606d69..17b816f50f4 100644 --- a/src/H5S.c +++ b/src/H5S.c @@ -83,18 +83,18 @@ H5FL_ARR_DEFINE(hsize_t, H5S_MAX_RANK); /* Dataspace ID class */ static const H5I_class_t H5I_DATASPACE_CLS[1] = {{ - H5I_DATASPACE, /* ID class value */ - 0, /* Class flags */ - 3, /* # of reserved IDs for class */ - (H5I_free_t)H5S__close_cb /* Callback routine for closing objects of this class */ + H5I_DATASPACE, /* ID class value */ + 0, /* Class flags */ + 3, /* # of reserved IDs for class */ + H5S__close_cb /* Callback routine for closing objects of this class */ }}; /* Dataspace selection iterator ID class */ static const H5I_class_t H5I_SPACE_SEL_ITER_CLS[1] = {{ - H5I_SPACE_SEL_ITER, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5S__sel_iter_close_cb /* Callback routine for closing objects of this class */ + H5I_SPACE_SEL_ITER, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5S__sel_iter_close_cb /* Callback routine for closing objects of this class */ }}; /* Flag indicating "top" of interface has been initialized */ diff --git a/src/H5Sall.c b/src/H5Sall.c index 8bdcc4ad9aa..4dc7465a8dc 100644 --- a/src/H5Sall.c +++ b/src/H5Sall.c @@ -624,16 +624,21 @@ H5S__all_serialize(H5S_t *space, uint8_t **p) static herr_t H5S__all_deserialize(H5S_t **space, const uint8_t **p, const size_t p_size, bool skip) { - uint32_t version; /* Version number */ - H5S_t *tmp_space = NULL; /* Pointer to actual dataspace to use, - either *space or a newly allocated one */ - herr_t ret_value = SUCCEED; /* return value */ - const uint8_t *p_end = *p + p_size - 1; /* Pointer to last valid byte in buffer */ + const uint8_t *p_end; + uint32_t version; /* Version number */ + H5S_t *tmp_space = NULL; /* Pointer to actual dataspace to use, either *space or a newly allocated one */ + herr_t ret_value = SUCCEED; /* return value */ + FUNC_ENTER_PACKAGE assert(p); assert(*p); + if (skip) + p_end = *p; + else + p_end = *p + p_size - 1; /* Pointer to last valid byte in buffer */ + /* As part of the efforts to push all selection-type specific coding to the callbacks, the coding for the allocation of a null dataspace is moved from H5S_select_deserialize() in H5Sselect.c. diff --git a/src/H5Shyper.c b/src/H5Shyper.c index 2a147c96378..8af4b93f175 100644 --- a/src/H5Shyper.c +++ b/src/H5Shyper.c @@ -4240,19 +4240,20 @@ H5S__hyper_serialize(H5S_t *space, uint8_t **p) static herr_t H5S__hyper_deserialize(H5S_t **space, const uint8_t **p, const size_t p_size, bool skip) { - H5S_t *tmp_space = NULL; /* Pointer to actual dataspace to use, - either *space or a newly allocated one */ - hsize_t dims[H5S_MAX_RANK]; /* Dimension sizes */ - hsize_t start[H5S_MAX_RANK]; /* hyperslab start information */ - hsize_t block[H5S_MAX_RANK]; /* hyperslab block information */ - uint32_t version; /* Version number */ - uint8_t flags = 0; /* Flags */ - uint8_t enc_size = 0; /* Encoded size of selection info */ - unsigned rank; /* rank of points */ - const uint8_t *pp; /* Local pointer for decoding */ - unsigned u; /* Local counting variable */ - herr_t ret_value = FAIL; /* return value */ - const uint8_t *p_end = *p + p_size - 1; /* Pointer to last valid byte in buffer */ + H5S_t *tmp_space = NULL; /* Pointer to actual dataspace to use, + either *space or a newly allocated one */ + hsize_t dims[H5S_MAX_RANK]; /* Dimension sizes */ + hsize_t start[H5S_MAX_RANK]; /* hyperslab start information */ + hsize_t block[H5S_MAX_RANK]; /* hyperslab block information */ + uint32_t version; /* Version number */ + uint8_t flags = 0; /* Flags */ + uint8_t enc_size = 0; /* Encoded size of selection info */ + unsigned rank; /* rank of points */ + const uint8_t *pp; /* Local pointer for decoding */ + unsigned u; /* Local counting variable */ + herr_t ret_value = FAIL; /* return value */ + const uint8_t *p_end; + FUNC_ENTER_PACKAGE /* Check args */ @@ -4260,6 +4261,11 @@ H5S__hyper_deserialize(H5S_t **space, const uint8_t **p, const size_t p_size, bo pp = (*p); assert(pp); + if (skip) + p_end = *p; + else + p_end = *p + p_size - 1; /* Pointer to last valid byte in buffer */ + /* As part of the efforts to push all selection-type specific coding to the callbacks, the coding for the allocation of a null dataspace is moved from H5S_select_deserialize() in H5Sselect.c to here. diff --git a/src/H5Spkg.h b/src/H5Spkg.h index 67125d874d6..35e9a15eb6e 100644 --- a/src/H5Spkg.h +++ b/src/H5Spkg.h @@ -396,7 +396,7 @@ H5_DLL herr_t H5S__hyper_project_intersection(H5S_t *src_space, H5S_t *dst_space H5S_t *proj_space, bool share_space); /* Operations on selection iterators */ -H5_DLL herr_t H5S__sel_iter_close_cb(H5S_sel_iter_t *_sel_iter, void **request); +H5_DLL herr_t H5S__sel_iter_close_cb(void *_sel_iter, void **request); /* Testing functions */ #ifdef H5S_TESTING diff --git a/src/H5Spoint.c b/src/H5Spoint.c index c8c226bee5a..22e73ed84a0 100644 --- a/src/H5Spoint.c +++ b/src/H5Spoint.c @@ -1363,8 +1363,9 @@ H5S__point_deserialize(H5S_t **space, const uint8_t **p, const size_t p_size, bo unsigned i, j; /* local counting variables */ size_t enc_type_size; size_t coordinate_buffer_requirement; - herr_t ret_value = SUCCEED; /* Return value */ - const uint8_t *p_end = *p + p_size - 1; /* Pointer to last valid byte in buffer */ + herr_t ret_value = SUCCEED; /* Return value */ + const uint8_t *p_end; + FUNC_ENTER_PACKAGE /* Check args */ @@ -1372,6 +1373,11 @@ H5S__point_deserialize(H5S_t **space, const uint8_t **p, const size_t p_size, bo pp = (*p); assert(pp); + if (skip) + p_end = *p; + else + p_end = *p + p_size - 1; /* Pointer to last valid byte in buffer */ + /* As part of the efforts to push all selection-type specific coding to the callbacks, the coding for the allocation of a null dataspace is moved from H5S_select_deserialize() in H5Sselect.c to here. diff --git a/src/H5Sselect.c b/src/H5Sselect.c index a449041d7d1..e8f3ae4a206 100644 --- a/src/H5Sselect.c +++ b/src/H5Sselect.c @@ -523,14 +523,22 @@ H5S_select_valid(const H5S_t *space) herr_t H5S_select_deserialize(H5S_t **space, const uint8_t **p, const size_t p_size) { - uint32_t sel_type; /* Pointer to the selection type */ - herr_t ret_value = FAIL; /* Return value */ - const uint8_t *p_end = *p + p_size - 1; /* Pointer to last valid byte in buffer */ - bool skip = (p_size == SIZE_MAX ? true : false); /* If p_size is unknown, skip buffer checks */ + uint32_t sel_type; /* Pointer to the selection type */ + herr_t ret_value = FAIL; /* Return value */ + const uint8_t *p_end = NULL; /* Pointer to last valid byte in buffer */ + bool skip = false; + FUNC_ENTER_NOAPI(FAIL) assert(space); + /* If p_size is unknown, skip buffer checks */ + skip = (p_size == SIZE_MAX ? true : false); + if (skip) + p_end = *p; + else + p_end = *p + p_size - 1; + /* Selection-type specific coding is moved to the callbacks. */ /* Decode selection type */ @@ -3069,7 +3077,7 @@ H5Ssel_iter_reset(hid_t sel_iter_id, hid_t space_id) *------------------------------------------------------------------------- */ herr_t -H5S__sel_iter_close_cb(H5S_sel_iter_t *_sel_iter, void H5_ATTR_UNUSED **request) +H5S__sel_iter_close_cb(void *_sel_iter, void H5_ATTR_UNUSED **request) { H5S_sel_iter_t *sel_iter = (H5S_sel_iter_t *)_sel_iter; /* The selection iterator to close */ herr_t ret_value = SUCCEED; /* Return value */ diff --git a/src/H5T.c b/src/H5T.c index cbf68b2b90c..323cc8fcbaa 100644 --- a/src/H5T.c +++ b/src/H5T.c @@ -485,7 +485,7 @@ static herr_t H5T__register_int(H5T_pers_t pers, const char *name, H5T_t *src, H static herr_t H5T__register(H5T_pers_t pers, const char *name, H5T_t *src, H5T_t *dst, H5T_conv_func_t *conv); static htri_t H5T__compiler_conv(H5T_t *src, H5T_t *dst); static herr_t H5T__set_size(H5T_t *dt, size_t size); -static herr_t H5T__close_cb(H5T_t *dt, void **request); +static herr_t H5T__close_cb(void *dt, void **request); static herr_t H5T__init_path_table(void); static bool H5T__path_table_search(const H5T_t *src, const H5T_t *dst, int *idx, int *last_cmp); static H5T_path_t *H5T__path_find_real(const H5T_t *src, const H5T_t *dst, const char *name, @@ -767,10 +767,10 @@ H5FL_DEFINE_STATIC(H5T_path_t); /* Datatype ID class */ static const H5I_class_t H5I_DATATYPE_CLS[1] = {{ - H5I_DATATYPE, /* ID class value */ - 0, /* Class flags */ - 8, /* # of reserved IDs for class */ - (H5I_free_t)H5T__close_cb /* Callback routine for closing objects of this class */ + H5I_DATATYPE, /* ID class value */ + 0, /* Class flags */ + 8, /* # of reserved IDs for class */ + H5T__close_cb /* Callback routine for closing objects of this class */ }}; /* Flag indicating "top" of interface has been initialized */ @@ -2480,31 +2480,32 @@ H5T_term_package(void) *------------------------------------------------------------------------- */ static herr_t -H5T__close_cb(H5T_t *dt, void **request) +H5T__close_cb(void *dt, void **request) { + H5T_t *dt_p = (H5T_t *)dt; herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE /* Sanity check */ - assert(dt); + assert(dt_p); /* If this datatype is VOL-managed (i.e.: has a VOL object), * close it through the VOL connector. */ - if (NULL != dt->vol_obj) { + if (NULL != dt_p->vol_obj) { /* Close the connector-managed datatype data */ - if (H5VL_datatype_close(dt->vol_obj, H5P_DATASET_XFER_DEFAULT, request) < 0) + if (H5VL_datatype_close(dt_p->vol_obj, H5P_DATASET_XFER_DEFAULT, request) < 0) HGOTO_ERROR(H5E_DATATYPE, H5E_CLOSEERROR, FAIL, "unable to close datatype"); /* Free the VOL object */ - if (H5VL_free_object(dt->vol_obj) < 0) - HGOTO_ERROR(H5E_ATTR, H5E_CANTDEC, FAIL, "unable to free VOL object"); - dt->vol_obj = NULL; + if (H5VL_free_object(dt_p->vol_obj) < 0) + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDEC, FAIL, "unable to free VOL object"); + dt_p->vol_obj = NULL; } /* end if */ /* Close the datatype */ - if (H5T_close(dt) < 0) + if (H5T_close(dt_p) < 0) HGOTO_ERROR(H5E_DATATYPE, H5E_CLOSEERROR, FAIL, "unable to close datatype"); done: diff --git a/src/H5Tref.c b/src/H5Tref.c index 7f09fae24ea..2ee48d7cdba 100644 --- a/src/H5Tref.c +++ b/src/H5Tref.c @@ -641,11 +641,10 @@ H5T__ref_mem_write(H5VL_object_t *src_file, const void *src_buf, size_t src_size H5VL_object_t H5_ATTR_UNUSED *dst_file, void *dst_buf, size_t H5_ATTR_NDEBUG_UNUSED dst_size, void H5_ATTR_UNUSED *bg_buf) { - H5F_t *src_f = NULL; - hid_t file_id = H5I_INVALID_HID; - H5R_ref_priv_t *dst_ref = (H5R_ref_priv_t *)dst_buf; - H5R_ref_priv_t tmp_ref; /* Temporary reference to decode into */ - herr_t ret_value = SUCCEED; + H5F_t *src_f = NULL; + hid_t file_id = H5I_INVALID_HID; + H5R_ref_priv_t tmp_ref; /* Temporary reference to decode into */ + herr_t ret_value = SUCCEED; FUNC_ENTER_PACKAGE H5T_REF_LOG_DEBUG(""); @@ -655,7 +654,6 @@ H5T__ref_mem_write(H5VL_object_t *src_file, const void *src_buf, size_t src_size assert(src_size); assert(dst_buf); assert(dst_size == H5T_REF_MEM_SIZE); - HDcompile_assert(sizeof(*dst_ref) == sizeof(tmp_ref)); /* Memory-to-memory conversion to support vlen conversion */ if (NULL == src_file) { @@ -736,7 +734,7 @@ H5T__ref_mem_write(H5VL_object_t *src_file, const void *src_buf, size_t src_size } /* end if */ /* Set output info */ - H5MM_memcpy(dst_ref, &tmp_ref, sizeof(tmp_ref)); + H5MM_memcpy(dst_buf, &tmp_ref, sizeof(tmp_ref)); done: if ((file_id != H5I_INVALID_HID) && (H5I_dec_ref(file_id) < 0)) diff --git a/src/H5VLint.c b/src/H5VLint.c index 477f5bc319a..cf65a7ff0ad 100644 --- a/src/H5VLint.c +++ b/src/H5VLint.c @@ -97,7 +97,7 @@ static void *H5VL__wrap_obj(void *obj, H5I_type_t obj_type); static H5VL_connector_t *H5VL__conn_create(H5VL_class_t *cls); static herr_t H5VL__conn_find(H5PL_vol_key_t *key, H5VL_connector_t **connector); static herr_t H5VL__conn_free(H5VL_connector_t *connector); -static herr_t H5VL__conn_free_id(H5VL_connector_t *connector, void H5_ATTR_UNUSED **request); +static herr_t H5VL__conn_free_id(void *connector, void H5_ATTR_UNUSED **request); static void *H5VL__object(hid_t id, H5I_type_t obj_type); static herr_t H5VL__free_vol_wrapper(H5VL_wrap_ctx_t *vol_wrap_ctx); @@ -118,10 +118,10 @@ bool H5_PKG_INIT_VAR = false; /* VOL ID class */ static const H5I_class_t H5I_VOL_CLS[1] = {{ - H5I_VOL, /* ID class value */ - 0, /* Class flags */ - 0, /* # of reserved IDs for class */ - (H5I_free_t)H5VL__conn_free_id /* Callback routine for closing objects of this class */ + H5I_VOL, /* ID class value */ + 0, /* Class flags */ + 0, /* # of reserved IDs for class */ + H5VL__conn_free_id /* Callback routine for closing objects of this class */ }}; /* Declare a free list to manage the H5VL_class_t struct */ @@ -1122,17 +1122,18 @@ H5VL__conn_free(H5VL_connector_t *connector) *------------------------------------------------------------------------- */ static herr_t -H5VL__conn_free_id(H5VL_connector_t *connector, void H5_ATTR_UNUSED **request) +H5VL__conn_free_id(void *connector, void H5_ATTR_UNUSED **request) { - herr_t ret_value = SUCCEED; /* Return value */ + H5VL_connector_t *connector_p = (H5VL_connector_t *)connector; + herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_PACKAGE /* Check arguments */ - assert(connector); + assert(connector_p); /* Decrement refcount on connector */ - if (H5VL_conn_dec_rc(connector) < 0) + if (H5VL_conn_dec_rc(connector_p) < 0) HGOTO_ERROR(H5E_VOL, H5E_CANTDEC, FAIL, "unable to decrement ref count on VOL connector"); done: