summaryrefslogtreecommitdiffstats
path: root/test/filter_plugin.c
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2017-12-29 17:53:11 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2017-12-29 17:53:11 (GMT)
commit6d3f7dea8683053cad86c04ac800ecf78361590f (patch)
tree2811e4032bf7059eb7075261b7dd80761127acb5 /test/filter_plugin.c
parentf5f2c36d98a6bfeb41363e38f1a34036264d1036 (diff)
downloadhdf5-6d3f7dea8683053cad86c04ac800ecf78361590f.zip
hdf5-6d3f7dea8683053cad86c04ac800ecf78361590f.tar.gz
hdf5-6d3f7dea8683053cad86c04ac800ecf78361590f.tar.bz2
Fix memory leak due to addition of FORMAT check loop
Diffstat (limited to 'test/filter_plugin.c')
-rw-r--r--test/filter_plugin.c204
1 files changed, 126 insertions, 78 deletions
diff --git a/test/filter_plugin.c b/test/filter_plugin.c
index 8b7e0e4..9897c84 100644
--- a/test/filter_plugin.c
+++ b/test/filter_plugin.c
@@ -134,7 +134,7 @@ allocate_and_init_2D_array(int ***arr, const hsize_t *sizes, int **initial_value
return SUCCEED;
error:
free_2D_array(arr);
-
+
return FAIL;
} /* end allocate_and_init_2D_array() */
@@ -165,7 +165,7 @@ compare_2D_arrays(int **dset1, int **dset2, const hsize_t *sizes, /*OUT*/ hbool_
}
return SUCCEED;
-
+
} /* end compare_2D_arrays() */
@@ -612,7 +612,7 @@ test_read_data(hid_t did, int *origin_data)
free_2D_array(&check);
PASSED();
-
+
return SUCCEED;
error:
@@ -943,14 +943,14 @@ error:
* paths.
*
* Return: SUCCEED/FAIL
- *
+ *
*-------------------------------------------------------------------------
*/
static herr_t
test_path_api_calls(void)
{
unsigned int n_starting_paths;
- unsigned int u;
+ unsigned int u;
unsigned int n_paths;
herr_t ret;
ssize_t path_len = -1;
@@ -1319,7 +1319,7 @@ error:
* Purpose: Turns the chunk cache off
*
* Return: SUCCEED/FAIL
- *
+ *
*-------------------------------------------------------------------------
*/
static herr_t
@@ -1360,37 +1360,36 @@ main(void)
unsigned new_format;
int nerrors = 0;
- /* Testing setup */
- h5_reset();
-
/*******************************************************************/
/* ENSURE THAT WRITING TO DATASETS AND CREATING GROUPS WORKS */
/*******************************************************************/
+ /* Test with old & new format groups */
+ for (new_format = FALSE; new_format <= TRUE; new_format++) {
+ hid_t my_fapl_id;
- /* Get a VFD-dependent filename */
- if ((old_ff_fapl_id = h5_fileaccess()) < 0)
- TEST_ERROR;
-
- /* Turn off the chunk cache, so all the chunks are immediately written to disk */
- if (disable_chunk_cache(old_ff_fapl_id) < 0)
- TEST_ERROR;
+ /* Testing setup */
+ h5_reset();
- /* Copy the file access property list and set the latest file format on it */
- if ((new_ff_fapl_id = H5Pcopy(old_ff_fapl_id)) < 0)
- TEST_ERROR;
- if (H5Pset_libver_bounds(new_ff_fapl_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0)
- TEST_ERROR;
+ /* Get a VFD-dependent filename */
+ if ((old_ff_fapl_id = h5_fileaccess()) < 0)
+ TEST_ERROR;
- /* Fix up the filename for the VFD */
- h5_fixname(FILENAME[0], old_ff_fapl_id, filename, sizeof(filename));
+ /* Turn off the chunk cache, so all the chunks are immediately written to disk */
+ if (disable_chunk_cache(old_ff_fapl_id) < 0)
+ TEST_ERROR;
- /* Test with old & new format groups */
- for (new_format = FALSE; new_format <= TRUE; new_format++) {
- hid_t my_fapl_id;
+ /* Fix up the filename for the VFD */
+ h5_fixname(FILENAME[0], old_ff_fapl_id, filename, sizeof(filename));
/* Set the FAPL for the type of format */
if (new_format) {
HDputs("\nTesting with new file format:");
+ /* Copy the file access property list and set the latest file format on it */
+ if ((new_ff_fapl_id = H5Pcopy(old_ff_fapl_id)) < 0)
+ TEST_ERROR;
+ if (H5Pset_libver_bounds(new_ff_fapl_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0)
+ TEST_ERROR;
+
my_fapl_id = new_ff_fapl_id;
}
else {
@@ -1410,61 +1409,121 @@ main(void)
if (H5Fclose(fid) < 0)
TEST_ERROR;
- } /* end for */
- /* Close FAPLs */
- if (H5Pclose(old_ff_fapl_id) < 0)
- TEST_ERROR;
- if (H5Pclose(new_ff_fapl_id) < 0)
- TEST_ERROR;
+ /* Close FAPLs */
+ if (H5Pclose(old_ff_fapl_id) < 0)
+ TEST_ERROR;
+ if (new_format) {
+ if (H5Pclose(new_ff_fapl_id) < 0)
+ TEST_ERROR;
+ }
- /* Restore the default error handler (set in h5_reset()) */
- h5_restore_err();
+ /* Restore the default error handler (set in h5_reset()) */
+ h5_restore_err();
- /*******************************************************************/
- /* ENSURE THAT READING FROM DATASETS AND OPENING GROUPS WORKS */
- /*******************************************************************/
+ /*******************************************************************/
+ /* ENSURE THAT READING FROM DATASETS AND OPENING GROUPS WORKS */
+ /*******************************************************************/
- HDputs("\nTesting reading data with with dynamic plugin filters:");
+ HDputs("\nTesting reading data with with dynamic plugin filters:");
- /* Close the library so that all loaded plugin libraries are unloaded */
- h5_reset();
- if ((old_ff_fapl_id = h5_fileaccess()) < 0)
- TEST_ERROR;
+ /* Close the library so that all loaded plugin libraries are unloaded */
+ h5_reset();
+ if ((old_ff_fapl_id = h5_fileaccess()) < 0)
+ TEST_ERROR;
- /* Reopen the file for testing data reading */
- if ((fid = H5Fopen(filename, H5F_ACC_RDONLY, old_ff_fapl_id)) < 0)
- TEST_ERROR;
+ /* Set the FAPL for the type of format */
+ if (new_format) {
+ /* Copy the file access property list and set the latest file format on it */
+ if ((new_ff_fapl_id = H5Pcopy(old_ff_fapl_id)) < 0)
+ TEST_ERROR;
+ if (H5Pset_libver_bounds(new_ff_fapl_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0)
+ TEST_ERROR;
- /* Read the data with filters */
- nerrors += (test_dataset_read_with_filters(fid) < 0 ? 1 : 0);
+ my_fapl_id = new_ff_fapl_id;
+ }
+ else
+ my_fapl_id = old_ff_fapl_id;
- /* Test creating groups using dynamically-loaded plugin filters */
- nerrors += (test_opening_groups_using_plugins(fid) < 0 ? 1 : 0);
+ /* Reopen the file for testing data reading */
+ if ((fid = H5Fopen(filename, H5F_ACC_RDONLY, my_fapl_id)) < 0)
+ TEST_ERROR;
- /* Restore the default error handler (set in h5_reset()) */
- h5_restore_err();
+ /* Read the data with filters */
+ nerrors += (test_dataset_read_with_filters(fid) < 0 ? 1 : 0);
- /*******************************************************************/
- /* ENSURE THAT DISABLING FILTER PLUGINS VIA THE FILTER FLAGS WORKS */
- /*******************************************************************/
+ /* Test creating groups using dynamically-loaded plugin filters */
+ nerrors += (test_opening_groups_using_plugins(fid) < 0 ? 1 : 0);
- /* Close the library so that all loaded plugin libraries are unloaded */
- h5_reset();
- if ((old_ff_fapl_id = h5_fileaccess()) < 0)
- TEST_ERROR;
+ /* Close FAPLs */
+ if (H5Pclose(old_ff_fapl_id) < 0)
+ TEST_ERROR;
+ if (new_format) {
+ if (H5Pclose(new_ff_fapl_id) < 0)
+ TEST_ERROR;
+ }
- /* Reopen the file for testing data reading */
- if ((fid = H5Fopen(filename, H5F_ACC_RDONLY, old_ff_fapl_id)) < 0)
- TEST_ERROR;
+ /* Restore the default error handler (set in h5_reset()) */
+ h5_restore_err();
- /* When filters are disabled, make sure we can't read data from a
- * dataset that requires a filter plugin.
- */
- nerrors += (test_no_read_when_plugins_disabled(fid) < 0 ? 1 : 0);
+ /*******************************************************************/
+ /* ENSURE THAT DISABLING FILTER PLUGINS VIA THE FILTER FLAGS WORKS */
+ /*******************************************************************/
- if (H5Fclose(fid) < 0)
- TEST_ERROR;
+ /* Close the library so that all loaded plugin libraries are unloaded */
+ h5_reset();
+ if ((old_ff_fapl_id = h5_fileaccess()) < 0)
+ TEST_ERROR;
+
+ /* Set the FAPL for the type of format */
+ if (new_format) {
+ /* Copy the file access property list and set the latest file format on it */
+ if ((new_ff_fapl_id = H5Pcopy(old_ff_fapl_id)) < 0)
+ TEST_ERROR;
+ if (H5Pset_libver_bounds(new_ff_fapl_id, H5F_LIBVER_LATEST, H5F_LIBVER_LATEST) < 0)
+ TEST_ERROR;
+
+ my_fapl_id = new_ff_fapl_id;
+ }
+ else
+ my_fapl_id = old_ff_fapl_id;
+
+ /* Reopen the file for testing data reading */
+ if ((fid = H5Fopen(filename, H5F_ACC_RDONLY, my_fapl_id)) < 0)
+ TEST_ERROR;
+
+ /* When filters are disabled, make sure we can't read data from a
+ * dataset that requires a filter plugin.
+ */
+ nerrors += (test_no_read_when_plugins_disabled(fid) < 0 ? 1 : 0);
+
+ if (H5Fclose(fid) < 0)
+ TEST_ERROR;
+
+ /*********************/
+ /* CLEAN UP */
+ /*********************/
+ /* Close FAPLs */
+ if (new_format) {
+ if (H5Pclose(new_ff_fapl_id) < 0)
+ TEST_ERROR;
+ }
+ else {
+ /* Restore the default error handler (set in h5_reset()) */
+ h5_restore_err();
+
+ if (H5Pclose(old_ff_fapl_id) < 0)
+ TEST_ERROR;
+ }
+
+ /* Free up saved arrays */
+ free_2D_array(&orig_deflate_g);
+ free_2D_array(&orig_dynlib1_g);
+ free_2D_array(&orig_dynlib2_g);
+ free_2D_array(&orig_dynlib4_g);
+ } /* end for */
+
+ h5_cleanup(FILENAME, old_ff_fapl_id);
/************************************/
/* TEST THE FILTER PLUGIN API CALLS */
@@ -1473,21 +1532,10 @@ main(void)
/* Test the APIs for access to the filter plugin path table */
nerrors += (test_path_api_calls() < 0 ? 1 : 0);
- /*********************/
- /* CLEAN UP AND EXIT */
- /*********************/
-
- /* Free up saved arrays */
- free_2D_array(&orig_deflate_g);
- free_2D_array(&orig_dynlib1_g);
- free_2D_array(&orig_dynlib2_g);
- free_2D_array(&orig_dynlib4_g);
-
if (nerrors)
TEST_ERROR;
HDprintf("All plugin tests passed.\n");
- h5_cleanup(FILENAME, old_ff_fapl_id);
HDexit(EXIT_SUCCESS);