summaryrefslogtreecommitdiffstats
path: root/fortran/src/H5Pf.c
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src/H5Pf.c')
-rw-r--r--fortran/src/H5Pf.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/fortran/src/H5Pf.c b/fortran/src/H5Pf.c
index 3dc401f..fed1249 100644
--- a/fortran/src/H5Pf.c
+++ b/fortran/src/H5Pf.c
@@ -50,7 +50,10 @@ nh5pcreate_c ( int_f *classtype, hid_t_f *prp_id )
return ret_value;
}
*/
- c_prp_id = H5Pcreate(c_classtype);
+ if (H5I_GENPROP_CLS == H5Iget_type((hid_t)*classtype))
+ c_prp_id = H5Pcreate_list((hid_t)*classtype);
+ else
+ c_prp_id = H5Pcreate(c_classtype);
if ( c_prp_id < 0 ) ret_value = -1;
*prp_id = (hid_t_f)c_prp_id;
@@ -71,10 +74,13 @@ int_f
nh5pclose_c ( hid_t_f *prp_id )
{
int ret_value = 0;
- hid_t c_prp_id;
+ hid_t c_prp_id=(*prp_id);
- c_prp_id = *prp_id;
- if ( H5Pclose(c_prp_id) < 0 ) ret_value = -1;
+ if (H5I_GENPROP_LST == H5Iget_type(c_prp_id)) {
+ if ( H5Pclose_list(c_prp_id) < 0 ) ret_value = -1;
+ } else {
+ if ( H5Pclose(c_prp_id) < 0 ) ret_value = -1;
+ }
return ret_value;
}
@@ -1133,7 +1139,8 @@ nh5pget_cache_c(hid_t_f *prp_id, int_f* mdc_nelmts, size_t_f* rdcc_nelmts, size_
int ret_value = -1;
hid_t c_prp_id;
herr_t ret;
- int c_mdc_nelmts, c_rdcc_nelmts;
+ int c_mdc_nelmts;
+ size_t c_rdcc_nelmts;
size_t c_rdcc_nbytes;
hid_t c_memb_plist;
double c_rdcc_w0;