mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-23 16:20:57 +08:00
[svn-r13714] Fix memory leak on objcopy.c test
H5Premove(dcpl, H5D_CRT_EXT_FILE_LIST_NAME) causes memory leak. Use new function H5P_reset_external_file_test(dcpl) instead.
This commit is contained in:
parent
90a16bb0dd
commit
37e010fbe0
@ -28,6 +28,7 @@
|
||||
#include "H5Eprivate.h" /* Error handling */
|
||||
#include "H5Iprivate.h" /* IDs */
|
||||
#include "H5Ppkg.h" /* Property lists */
|
||||
#include "H5Dprivate.h" /* Dataset */
|
||||
|
||||
/* Local variables */
|
||||
|
||||
@ -124,3 +125,49 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value);
|
||||
} /* H5P_open_class_path_test() */
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
NAME
|
||||
H5P_reset_external_file_test
|
||||
PURPOSE
|
||||
Routine to reset external file list
|
||||
USAGE
|
||||
herr_t H5P_reset_external_file_test(plist)
|
||||
hid_t dcpl_id; IN: the property list
|
||||
|
||||
RETURNS
|
||||
Non-negative on success/Negative on failure
|
||||
|
||||
PROGRAMMER
|
||||
Peter Cao
|
||||
April 30, 2007
|
||||
--------------------------------------------------------------------------*/
|
||||
herr_t
|
||||
H5P_reset_external_file_test(hid_t dcpl_id)
|
||||
{
|
||||
H5O_efl_t efl; /* External file list */
|
||||
H5P_genplist_t *plist; /* Property list */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(H5P_reset_external_file_test, FAIL);
|
||||
|
||||
/* Check arguments */
|
||||
if(NULL == (plist = H5I_object(dcpl_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset creation property list")
|
||||
|
||||
/* get external file list */
|
||||
if(H5P_get(plist, H5D_CRT_EXT_FILE_LIST_NAME, &efl) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get external file list")
|
||||
|
||||
/* Clean up any values set for the external file-list */
|
||||
if(H5O_msg_reset(H5O_EFL_ID, &efl) < 0)
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "can't release external file list info")
|
||||
|
||||
/* set external file list */
|
||||
if(H5P_set(plist, H5D_CRT_EXT_FILE_LIST_NAME, &efl) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get external file list")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value);
|
||||
} /* H5P_reset_external_file_test() */
|
||||
|
||||
|
@ -1078,8 +1078,14 @@ compare_datasets(hid_t did, hid_t did2, hid_t pid, const void *wbuf)
|
||||
}
|
||||
|
||||
/* Remove external file information from the dcpls */
|
||||
/* Remove default property causes memory leak
|
||||
if(H5Premove(dcpl, H5D_CRT_EXT_FILE_LIST_NAME) < 0) TEST_ERROR
|
||||
if(H5Premove(dcpl2, H5D_CRT_EXT_FILE_LIST_NAME) < 0) TEST_ERROR
|
||||
*/
|
||||
|
||||
/* reset external file information from the dcpls */
|
||||
if (H5P_reset_external_file_test(dcpl) < 0) TEST_ERROR
|
||||
if (H5P_reset_external_file_test(dcpl2) < 0) TEST_ERROR
|
||||
}
|
||||
|
||||
/* Compare the rest of the dataset creation property lists */
|
||||
|
Loading…
Reference in New Issue
Block a user