summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2019-06-18 18:42:03 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2019-06-18 18:42:03 (GMT)
commit6cd728796dee1cbc5b1fdf28900b23b7a6870b67 (patch)
treed336a90e3bd65d5261baf88b6cff4fc9ffb51683 /src
parentd118a47a921fb8c545805dbd9ceea93bb487d9b6 (diff)
parent10535e0376d88e218cab782322bfc06f35835f31 (diff)
downloadhdf5-6cd728796dee1cbc5b1fdf28900b23b7a6870b67.zip
hdf5-6cd728796dee1cbc5b1fdf28900b23b7a6870b67.tar.gz
hdf5-6cd728796dee1cbc5b1fdf28900b23b7a6870b67.tar.bz2
Merging in latest from upstream (HDFFV/hdf5:refs/heads/develop)
* commit '10535e0376d88e218cab782322bfc06f35835f31': Reset the other convenience pointer because why no Fixed a memory bug where a pointer is used after it's been freed.
Diffstat (limited to 'src')
-rw-r--r--src/H5Shyper.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/H5Shyper.c b/src/H5Shyper.c
index 6df368d..4c8e458 100644
--- a/src/H5Shyper.c
+++ b/src/H5Shyper.c
@@ -11612,11 +11612,11 @@ H5S__hyper_get_clip_diminfo(hsize_t start, hsize_t stride, hsize_t *count,
herr_t
H5S_hyper_clip_unlim(H5S_t *space, hsize_t clip_size)
{
- H5S_hyper_sel_t *hslab; /* Convenience pointer to hyperslab info */
- hsize_t orig_count; /* Original count in unlimited dimension */
- int orig_unlim_dim; /* Original unliminted dimension */
- H5S_hyper_dim_t *diminfo; /* Convenience pointer to diminfo.opt in unlimited dimension */
- herr_t ret_value = SUCCEED; /* Return value */
+ H5S_hyper_sel_t *hslab = NULL; /* Convenience pointer to hyperslab info */
+ hsize_t orig_count; /* Original count in unlimited dimension */
+ int orig_unlim_dim; /* Original unliminted dimension */
+ H5S_hyper_dim_t *diminfo = NULL; /* Convenience pointer to diminfo.opt in unlimited dimension */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
@@ -11647,6 +11647,10 @@ H5S_hyper_clip_unlim(H5S_t *space, hsize_t clip_size)
/* Convert to "none" selection */
if(H5S_select_none(space) < 0)
HGOTO_ERROR(H5E_DATASPACE, H5E_CANTDELETE, FAIL, "can't convert selection")
+
+ /* Reset the convenience pointers */
+ hslab = NULL;
+ diminfo = NULL;
} /* end if */
/* Check for single block in unlimited dimension */
else if(orig_count == (hsize_t)1) {
@@ -11699,7 +11703,7 @@ H5S_hyper_clip_unlim(H5S_t *space, hsize_t clip_size)
} /* end else */
/* Update the upper bound, if the diminfo is valid */
- if(H5S_DIMINFO_VALID_YES == hslab->diminfo_valid)
+ if(hslab && (H5S_DIMINFO_VALID_YES == hslab->diminfo_valid))
hslab->diminfo.high_bounds[orig_unlim_dim] =
hslab->diminfo.opt[orig_unlim_dim].start +
hslab->diminfo.opt[orig_unlim_dim].stride * (hslab->diminfo.opt[orig_unlim_dim].count - 1) +