mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-05 15:42:32 +08:00
[svn-r9375] Purpose:
Bug fix Description: Close a couple of memory leaks Platforms tested: FreeBSD 4.10 (sleipnir) Solaris 2.7 (arabica) w/purify Linux 2.4 (verbena) too minor for h5committest
This commit is contained in:
parent
01dbfdefb2
commit
458576c826
15
src/H5T.c
15
src/H5T.c
@ -2959,7 +2959,7 @@ H5T_open (H5G_entry_t *ent, hid_t dxpl_id)
|
||||
{
|
||||
shared_fo->fo_count++;
|
||||
|
||||
if(NULL == (dt = H5FL_CALLOC(H5T_t)))
|
||||
if(NULL == (dt = H5FL_MALLOC(H5T_t)))
|
||||
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "can't allocate space for datatype")
|
||||
|
||||
dt->shared=shared_fo;
|
||||
@ -3012,15 +3012,9 @@ H5T_open_oid (H5G_entry_t *ent, hid_t dxpl_id)
|
||||
|
||||
assert (ent);
|
||||
|
||||
if(NULL==(dt=H5FL_CALLOC(H5T_t)))
|
||||
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
|
||||
if(NULL==(dt->shared=H5FL_MALLOC(H5T_shared_t)))
|
||||
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
|
||||
|
||||
if (H5O_open (ent)<0)
|
||||
HGOTO_ERROR (H5E_DATATYPE, H5E_CANTOPENOBJ, NULL, "unable to open named data type");
|
||||
/* The fourth argument to H5O_read is dt because we've already CALLOC'ed memory for it */
|
||||
if (NULL==(dt=H5O_read (ent, H5O_DTYPE_ID, 0, dt, dxpl_id)))
|
||||
if (NULL==(dt=H5O_read (ent, H5O_DTYPE_ID, 0, NULL, dxpl_id)))
|
||||
HGOTO_ERROR (H5E_DATATYPE, H5E_CANTINIT, NULL, "unable to load type message from object header");
|
||||
|
||||
/* Mark the type as named and open */
|
||||
@ -3568,10 +3562,7 @@ H5T_set_size(H5T_t *dt, size_t size)
|
||||
}
|
||||
}
|
||||
|
||||
if((memb_type = H5T_get_member_type(dt, max_index))==NULL)
|
||||
HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to get type of member");
|
||||
|
||||
max_size = H5T_get_size(memb_type);
|
||||
max_size = H5T_get_member_size(dt, max_index);
|
||||
|
||||
if(size<(max_offset+max_size))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "size shrinking will cut off last member ");
|
||||
|
@ -298,6 +298,40 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5T_get_member_size
|
||||
*
|
||||
* Purpose: Returns the size of the specified member.
|
||||
*
|
||||
* Return: Success: The size in bytes of the member's datatype.
|
||||
*
|
||||
* Failure: 0
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* October 4, 2004
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
size_t
|
||||
H5T_get_member_size(H5T_t *dt, int membno)
|
||||
{
|
||||
size_t ret_value = 0;
|
||||
|
||||
FUNC_ENTER_NOAPI(H5T_get_member_size, 0);
|
||||
|
||||
assert(dt);
|
||||
assert(membno >=0 && membno < dt->shared->u.compnd.nmembs);
|
||||
|
||||
/* Value */
|
||||
ret_value = dt->shared->u.compnd.memb[membno].type->shared->size;
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value);
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5Tinsert
|
||||
|
@ -1091,6 +1091,7 @@ H5_DLL H5T_t * H5T_array_create(H5T_t *base, int ndims,
|
||||
/* Compound functions */
|
||||
H5_DLL H5T_t *H5T_get_member_type(const H5T_t *dt, unsigned membno);
|
||||
H5_DLL size_t H5T_get_member_offset(const H5T_t *dt, unsigned membno);
|
||||
H5_DLL size_t H5T_get_member_size(H5T_t *dt, int membno);
|
||||
H5_DLL htri_t H5T_is_packed(const H5T_t *dt);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user