summaryrefslogtreecommitdiffstats
path: root/src/H5FDvfd_swmr.c
diff options
context:
space:
mode:
authorDavid Young <dyoung@hdfgroup.org>2020-01-10 17:57:03 (GMT)
committerDavid Young <dyoung@hdfgroup.org>2020-01-10 18:00:22 (GMT)
commitcdbdc33c5a5eb2bbca91167234c465c2b1f31ded (patch)
tree522b4c6f221db9962f7cbcddd9aa01cf9fcb9fc8 /src/H5FDvfd_swmr.c
parent671f7552ab56a446bb3b1227d0618e4add965316 (diff)
downloadhdf5-cdbdc33c5a5eb2bbca91167234c465c2b1f31ded.zip
hdf5-cdbdc33c5a5eb2bbca91167234c465c2b1f31ded.tar.gz
hdf5-cdbdc33c5a5eb2bbca91167234c465c2b1f31ded.tar.bz2
Simplify nested logic in H5FD_vfd_swmr_get_tick_and_idx().
assert() our expectation that either a NULL index was passed, or a pointer to the index length was passed in, too.
Diffstat (limited to 'src/H5FDvfd_swmr.c')
-rw-r--r--src/H5FDvfd_swmr.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/H5FDvfd_swmr.c b/src/H5FDvfd_swmr.c
index bf47c63..c37f674 100644
--- a/src/H5FDvfd_swmr.c
+++ b/src/H5FDvfd_swmr.c
@@ -1558,6 +1558,8 @@ H5FD_vfd_swmr_get_tick_and_idx(H5FD_t *_file, hbool_t reload_hdr_and_index,
H5FD_vfd_swmr_t *file = (H5FD_vfd_swmr_t *)_file; /* VFD SWMR file struct */
herr_t ret_value = SUCCEED; /* Return value */
+ assert(index == NULL || num_entries_ptr != NULL);
+
FUNC_ENTER_NOAPI(FAIL)
/* Load and decode the header and index as indicated */
@@ -1571,20 +1573,21 @@ H5FD_vfd_swmr_get_tick_and_idx(H5FD_t *_file, hbool_t reload_hdr_and_index,
if(tick_ptr != NULL)
*tick_ptr = file->md_header.tick_num;
- if(num_entries_ptr != NULL) {
-
- if(*num_entries_ptr >= file->md_index.num_entries && index != NULL) {
+ if (index != NULL) {
- HDassert(*num_entries_ptr);
-
- HDmemcpy(index, file->md_index.entries,
- (file->md_index.num_entries *
- sizeof(H5FD_vfd_swmr_idx_entry_t)));
+ if (*num_entries_ptr < file->md_index.num_entries) {
+ HGOTO_ERROR(H5E_VFL, H5E_CANTLOAD, FAIL,
+ "not enough space to copy index");
}
- *num_entries_ptr = file->md_index.num_entries;
+ HDmemcpy(index, file->md_index.entries,
+ (file->md_index.num_entries *
+ sizeof(file->md_index.entries[0])));
}
+ if(num_entries_ptr != NULL)
+ *num_entries_ptr = file->md_index.num_entries;
+
done:
FUNC_LEAVE_NOAPI(ret_value)