From cdf837d0a16acd657e53057d19b4b21763eeca45 Mon Sep 17 00:00:00 2001 From: jhendersonHDF Date: Thu, 5 May 2022 15:32:49 -0500 Subject: Fix a few Clang sanitizer warnings (#1727) --- src/H5Tconv.c | 28 ++++++++++++++++++---------- src/H5VLdyn_ops.c | 7 +++++-- test/dsets.c | 15 +++++++++------ 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/src/H5Tconv.c b/src/H5Tconv.c index da98182..de836dc 100644 --- a/src/H5Tconv.c +++ b/src/H5Tconv.c @@ -3266,9 +3266,10 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, si /* If we're down to the last few elements, just wrap up */ /* with a "real" reverse copy */ if (safe < 2) { - s = (uint8_t *)buf + (nelmts - 1) * (size_t)s_stride; - d = (uint8_t *)buf + (nelmts - 1) * (size_t)d_stride; - b = (uint8_t *)bkg + (nelmts - 1) * (size_t)b_stride; + s = (uint8_t *)buf + (nelmts - 1) * (size_t)s_stride; + d = (uint8_t *)buf + (nelmts - 1) * (size_t)d_stride; + if (bkg) + b = (uint8_t *)bkg + (nelmts - 1) * (size_t)b_stride; s_stride = -s_stride; d_stride = -d_stride; b_stride = -b_stride; @@ -3278,7 +3279,8 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, si else { s = (uint8_t *)buf + (nelmts - safe) * (size_t)s_stride; d = (uint8_t *)buf + (nelmts - safe) * (size_t)d_stride; - b = (uint8_t *)bkg + (nelmts - safe) * (size_t)b_stride; + if (bkg) + b = (uint8_t *)bkg + (nelmts - safe) * (size_t)b_stride; } /* end else */ } /* end if */ else { @@ -3426,7 +3428,9 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, si /* Advance pointers */ s += s_stride; d += d_stride; - b += b_stride; + + if (b) + b += b_stride; } /* end for */ /* Decrement number of elements left to convert */ @@ -3716,9 +3720,10 @@ H5T__conv_ref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, siz /* If we're down to the last few elements, just wrap up */ /* with a "real" reverse copy */ if (safe < 2) { - s = (uint8_t *)buf + (nelmts - 1) * (size_t)s_stride; - d = (uint8_t *)buf + (nelmts - 1) * (size_t)d_stride; - b = (uint8_t *)bkg + (nelmts - 1) * (size_t)b_stride; + s = (uint8_t *)buf + (nelmts - 1) * (size_t)s_stride; + d = (uint8_t *)buf + (nelmts - 1) * (size_t)d_stride; + if (bkg) + b = (uint8_t *)bkg + (nelmts - 1) * (size_t)b_stride; s_stride = -s_stride; d_stride = -d_stride; b_stride = -b_stride; @@ -3728,7 +3733,8 @@ H5T__conv_ref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, siz else { s = (uint8_t *)buf + (nelmts - safe) * (size_t)s_stride; d = (uint8_t *)buf + (nelmts - safe) * (size_t)d_stride; - b = (uint8_t *)bkg + (nelmts - safe) * (size_t)b_stride; + if (bkg) + b = (uint8_t *)bkg + (nelmts - safe) * (size_t)b_stride; } /* end else */ } /* end if */ else { @@ -3796,7 +3802,9 @@ H5T__conv_ref(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, siz /* Advance pointers */ s += s_stride; d += d_stride; - b += b_stride; + + if (b) + b += b_stride; } /* end for */ /* Decrement number of elements left to convert */ diff --git a/src/H5VLdyn_ops.c b/src/H5VLdyn_ops.c index e175246..7889224 100644 --- a/src/H5VLdyn_ops.c +++ b/src/H5VLdyn_ops.c @@ -166,9 +166,12 @@ H5VL__term_opt_operation(void) FUNC_ENTER_PACKAGE_NOERR /* Iterate over the VOL subclasses */ - for (subcls = 0; subcls < NELMTS(H5VL_opt_vals_g); subcls++) - if (H5VL_opt_ops_g[subcls]) + for (subcls = 0; subcls < NELMTS(H5VL_opt_vals_g); subcls++) { + if (H5VL_opt_ops_g[subcls]) { H5SL_destroy(H5VL_opt_ops_g[subcls], H5VL__term_opt_operation_cb, NULL); + H5VL_opt_ops_g[subcls] = NULL; + } + } FUNC_LEAVE_NOAPI(SUCCEED) } /* H5VL__term_opt_operation() */ diff --git a/test/dsets.c b/test/dsets.c index 43f420e..c1ac3ec 100644 --- a/test/dsets.c +++ b/test/dsets.c @@ -12531,10 +12531,13 @@ test_bt2_hdr_fd(const char *env_h5_driver, hid_t fapl) hid_t dcpl = -1; hid_t msid = -1; H5D_chunk_index_t idx_type; - const hsize_t shape[2] = {8, 8}; - const hsize_t maxshape[2] = {H5S_UNLIMITED, H5S_UNLIMITED}; - const hsize_t chunk[2] = {8, 8}; - const int buffer[8] = {0, 1, 2, 3, 4, 5, 6, 7}; + const hsize_t shape[2] = {8, 8}; + const hsize_t maxshape[2] = {H5S_UNLIMITED, H5S_UNLIMITED}; + const hsize_t chunk[2] = {8, 8}; + const int buffer[8][8] = {{0, 1, 2, 3, 4, 5, 6, 7}, {8, 9, 10, 11, 12, 13, 14, 15}, + {16, 17, 18, 19, 20, 21, 22, 23}, {24, 25, 26, 27, 28, 29, 30, 31}, + {32, 33, 34, 35, 36, 37, 38, 39}, {40, 41, 42, 43, 44, 45, 46, 47}, + {48, 49, 50, 51, 52, 53, 54, 55}, {56, 57, 58, 59, 60, 61, 62, 63}}; H5O_info2_t info; TESTING("Version 2 B-tree chunk index header flush dependencies handled correctly"); @@ -15287,8 +15290,8 @@ test_h5s_plist(void) /* Attempt to 'OR' block with invalid dimensions into the selection */ H5E_BEGIN_TRY { - ret = H5Pset_dataset_io_hyperslab_selection(dxpl_id_copy, 2, H5S_SELECT_OR, &start, &stride, &count, - &block); + ret = H5Pset_dataset_io_hyperslab_selection(dxpl_id_copy, H5S_MAX_RANK + 1, H5S_SELECT_OR, &start, + &stride, &count, &block); } H5E_END_TRY; if (ret == SUCCEED) -- cgit v0.12