mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-25 17:00:45 +08:00
[svn-r3021] Purpose:
Bug fix Description: Moving VL data reclamation to be more local to where the data is read in. Platforms tested: Linux 2.2.16-3smp (eirene)
This commit is contained in:
parent
19d811532a
commit
7062c4889a
@ -1126,14 +1126,6 @@ h5dump_sprint(h5dump_str_t *str/*in,out*/, const h5dump_t *info,
|
||||
|
||||
H5Tclose(memb);
|
||||
|
||||
/* Create a datatype for reclaiming the memory */
|
||||
space=H5Screate(H5S_SCALAR);
|
||||
|
||||
/* Reclaim the VL memory */
|
||||
H5Dvlen_reclaim(type,space,H5P_DEFAULT,cp_vp);
|
||||
|
||||
/* Let the dataspace go */
|
||||
H5Sclose(space);
|
||||
} else {
|
||||
/* All other types get printed as hexadecimal */
|
||||
unsigned int i;
|
||||
@ -1483,6 +1475,9 @@ h5dump_simple_dset(FILE *stream, const h5dump_t *info, hid_t dset,
|
||||
hsize_t hs_size[H5S_MAX_RANK]; /*size this pass */
|
||||
hsize_t hs_nelmts; /*elements in request */
|
||||
|
||||
/* VL data special information */
|
||||
unsigned vl_data=0; /* Whether the dataset contains VL datatypes */
|
||||
|
||||
#if 0
|
||||
hsize_t dim_n_size;
|
||||
#endif
|
||||
@ -1519,6 +1514,10 @@ h5dump_simple_dset(FILE *stream, const h5dump_t *info, hid_t dset,
|
||||
|
||||
ctx.size_last_dim = total_size[ctx.ndims - 1];
|
||||
|
||||
/* Check if we have VL data in the dataset's datatype */
|
||||
if(H5Tdetect_class(p_type,H5T_VLEN)==TRUE)
|
||||
vl_data=TRUE;
|
||||
|
||||
/*
|
||||
* Determine the strip mine size and allocate a buffer. The strip mine is
|
||||
* a hyperslab whose size is manageable.
|
||||
@ -1571,6 +1570,10 @@ h5dump_simple_dset(FILE *stream, const h5dump_t *info, hid_t dset,
|
||||
h5dump_simple_data(stream, info, dset, &ctx, flags, hs_nelmts,
|
||||
p_type, sm_buf);
|
||||
|
||||
/* Reclaim any VL memory, if necessary */
|
||||
if(vl_data)
|
||||
H5Dvlen_reclaim(p_type,sm_space,H5P_DEFAULT,sm_buf);
|
||||
|
||||
/* Calculate the next hyperslab offset */
|
||||
for (i = ctx.ndims, carry = 1; i > 0 && carry; --i) {
|
||||
ctx.p_min_idx[i - 1] = ctx.p_max_idx[i - 1];
|
||||
|
Loading…
x
Reference in New Issue
Block a user