summaryrefslogtreecommitdiffstats
path: root/src/H5Shyper.c
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-08-27 16:48:50 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-08-27 16:48:50 (GMT)
commiteb5e01d37ca2570afc50756c9ed6a0be214502ec (patch)
tree08281269dc5b2eeef48286fb991bd6a05f71f6a3 /src/H5Shyper.c
parent11f1b67c878b17abc225d09fb2a2019f338f92b2 (diff)
downloadhdf5-eb5e01d37ca2570afc50756c9ed6a0be214502ec.zip
hdf5-eb5e01d37ca2570afc50756c9ed6a0be214502ec.tar.gz
hdf5-eb5e01d37ca2570afc50756c9ed6a0be214502ec.tar.bz2
[svn-r620] Changes since 19980825
---------------------- ./MANIFEST ./src/H5R.c [NEW] ./src/H5Rprivate.h [NEW] ./src/H5Rpublic.h [NEW] ./src/Makefile.in ./src/hdf5.h ./test/ragged.c [NEW] Preliminary support for 2d ragged arrays for Mark Miller and Jim Reus. Not fully implemented yet. The test is not actually part of `make test' because we still have some memory problems. ./src/H5E.c ./src/H5Epublic.h Added H5E_RAGGED as a major error number. ./bin/release Checks the MANIFEST file against `svf ls' on systems that have it. ./bin/trace Fixed a bug that caused arguments of type `void *x[]' to not be handled. ./src/H5.c Removed unused variables and changed a couple types to fix compiler warnings. Added tracing support for ragged array object ID's and arrays of pointers. ./src/H5D.c H5Dcreate() will complain if either of the property lists are invalid (instead of using the default). ./src/H5D.c ./src/H5Dprivate.h Split H5Dget_space() into an API and internal function so it can be called from the new ragged array layer. ./src/H5Fistore.c Fixed warnings about unsigned vs. signed comparisons. ./src/H5Flow.c Fixed a warning about a variable being shadowed in the MPI-IO stuff. ./src/H5Iprivate.h ./src/H5Ipublic.h Added the H5_RAGGED atom group. ./src/H5Shyper.c Fixed some freeing-free-memory errors that resulted when certain arrays were freed but the pointers were left in the data structures. I simply set the pointers to null after they were freed. ./src/H5Sprivate.h ./src/H5Sselect.c Split the H5Sselect_hyperslab() function into an API and a private function so it could be called from the ragged array layer. Added H5S_SEL_ERROR and H5S_SEL_N to the switch statements to get rid or compiler warnings. ./src/H5Tconv.c Removed a misleading comment. ./test/bittests.c Fixed a warning about a printf(). ./test/cmpd_dset.c Fixed warnings about unused variables because of test #11 being commented out. ./bin/trace Shortened the right margin for the output to allow room for the `);' at the end of the TRACE() macros.
Diffstat (limited to 'src/H5Shyper.c')
-rw-r--r--src/H5Shyper.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/H5Shyper.c b/src/H5Shyper.c
index d9a0e4a..cd0138c 100644
--- a/src/H5Shyper.c
+++ b/src/H5Shyper.c
@@ -1698,6 +1698,11 @@ done:
COMMENTS, BUGS, ASSUMPTIONS
EXAMPLES
REVISION LOG
+ * Robb Matzke, 1998-08-25
+ * The fields which are freed are set to NULL to prevent them from being
+ * freed again later. This fixes some allocation problems where
+ * changing the hyperslab selection of one data space causes a core dump
+ * when closing some other data space.
--------------------------------------------------------------------------*/
herr_t
H5S_hyper_release (H5S_t *space)
@@ -1718,21 +1723,26 @@ H5S_hyper_release (H5S_t *space)
/* Release the per-dimension selection info */
H5MM_xfree(space->select.sel_info.hyper.diminfo);
+ space->select.sel_info.hyper.diminfo = NULL;
/* Release hi and lo boundary information */
for(i=0; i<space->extent.u.simple.rank; i++) {
H5MM_xfree(space->select.sel_info.hyper.hyper_lst->lo_bounds[i]);
+ space->select.sel_info.hyper.hyper_lst->lo_bounds[i] = NULL;
H5MM_xfree(space->select.sel_info.hyper.hyper_lst->hi_bounds[i]);
+ space->select.sel_info.hyper.hyper_lst->hi_bounds[i] = NULL;
} /* end for */
H5MM_xfree(space->select.sel_info.hyper.hyper_lst->lo_bounds);
+ space->select.sel_info.hyper.hyper_lst->lo_bounds = NULL;
H5MM_xfree(space->select.sel_info.hyper.hyper_lst->hi_bounds);
+ space->select.sel_info.hyper.hyper_lst->hi_bounds = NULL;
/* Release list of selected regions */
curr=space->select.sel_info.hyper.hyper_lst->head;
while(curr!=NULL) {
next=curr->next;
- H5MM_xfree(curr->start);
- H5MM_xfree(curr->end);
+ curr->start = H5MM_xfree(curr->start);
+ curr->end = H5MM_xfree(curr->end);
H5MM_xfree(curr);
curr=next;
} /* end while */