[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:
Peter Cao 2007-04-30 17:44:04 -05:00
parent 90a16bb0dd
commit 37e010fbe0
2 changed files with 53 additions and 0 deletions

View File

@ -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() */

View File

@ -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 */