diff options
author | Allen Byrne <byrn@hdfgroup.org> | 2019-06-18 18:42:03 (GMT) |
---|---|---|
committer | Allen Byrne <byrn@hdfgroup.org> | 2019-06-18 18:42:03 (GMT) |
commit | 6cd728796dee1cbc5b1fdf28900b23b7a6870b67 (patch) | |
tree | d336a90e3bd65d5261baf88b6cff4fc9ffb51683 /src | |
parent | d118a47a921fb8c545805dbd9ceea93bb487d9b6 (diff) | |
parent | 10535e0376d88e218cab782322bfc06f35835f31 (diff) | |
download | hdf5-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.c | 16 |
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) + |