summaryrefslogtreecommitdiffstats
path: root/fortran/src/H5Df.c
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/src/H5Df.c')
-rw-r--r--fortran/src/H5Df.c34
1 files changed, 16 insertions, 18 deletions
diff --git a/fortran/src/H5Df.c b/fortran/src/H5Df.c
index dc6ac43..21dbed9 100644
--- a/fortran/src/H5Df.c
+++ b/fortran/src/H5Df.c
@@ -1082,8 +1082,9 @@ nh5dvlen_get_max_len_c ( hid_t_f *dset_id , hid_t_f *type_id, hid_t_f *space_id
hid_t c_type_id;
hid_t c_space_id;
hvl_t *c_buf;
- int i,j;
+ int i;
hssize_t num_elem;
+ herr_t status;
c_dset_id = (hid_t)*dset_id;
c_type_id = (hid_t)*type_id;
@@ -1094,16 +1095,17 @@ nh5dvlen_get_max_len_c ( hid_t_f *dset_id , hid_t_f *type_id, hid_t_f *space_id
c_buf = (hvl_t *)malloc(sizeof(hvl_t)*num_elem);
if (c_buf == NULL) return ret_value;
- if(H5Dread(c_dset_id, c_type_id, H5S_ALL, c_space_id, H5P_DEFAULT, c_buf)) goto DONE;
+ status = H5Dread(c_dset_id, c_type_id, H5S_ALL, c_space_id, H5P_DEFAULT, c_buf);
+ if(status < 0) goto DONE;
c_len = 0;
for (i=0; i < num_elem; i++) c_len = H5_MAX(c_len, c_buf[i].len);
*len = (size_t_f)c_len;
+ H5Dvlen_reclaim(c_type_id, c_space_id, H5P_DEFAULT, c_buf);
ret_value = 0;
DONE:
- H5Dvlen_reclaim(c_type_id, c_space_id, H5P_DEFAULT, c_buf);
free(c_buf);
return ret_value;
}
@@ -1140,7 +1142,7 @@ nh5dwrite_vl_integer_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_
size_t max_len;
hvl_t *c_buf;
- int i, j;
+ int i;
hsize_t num_elem;
max_len = (size_t)dims[0];
@@ -1223,15 +1225,14 @@ nh5dread_vl_integer_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_s
* Call H5Dread function.
*/
status = H5Dread(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, c_buf);
- if ( status >=0 ) {
+ if ( status < 0 ) goto DONE;
for (i=0; i < num_elem; i++) {
len[i] = (size_t_f)c_buf[i].len;
memcpy(&buf[i*max_len], c_buf[i].p, c_buf[i].len*sizeof(int));
}
- }
- ret_value = num_elem;
-DONE:
H5Dvlen_reclaim(c_mem_type_id, c_mem_space_id, H5P_DEFAULT, c_buf);
+ ret_value = 0;
+DONE:
free(c_buf);
return ret_value;
}
@@ -1266,10 +1267,9 @@ nh5dwrite_vl_string_c( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_sp
herr_t status;
char *tmp, *tmp_p;
size_t max_len;
- size_t buf_len;
char **c_buf;
- int i, j;
+ int i;
hsize_t num_elem;
max_len = (size_t)dims[0];
@@ -1346,10 +1346,9 @@ nh5dread_vl_string_c( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_spa
herr_t status;
char *tmp, *tmp_p;
size_t max_len;
- size_t buf_len;
char **c_buf;
- int i, j;
+ int i;
hsize_t num_elem;
max_len = (size_t)dims[0];
@@ -1386,7 +1385,6 @@ nh5dread_vl_string_c( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_spa
}
HD5packFstring(tmp, _fcdtocp(buf), max_len*num_elem);
ret_value = 0;
-DONE:
H5Dvlen_reclaim(c_mem_type_id, c_mem_space_id, H5P_DEFAULT, c_buf);
free(c_buf);
free(tmp);
@@ -1430,7 +1428,7 @@ nh5dwrite_vl_real_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_spa
size_t max_len;
hvl_t *c_buf;
- int i, j;
+ int i;
hsize_t num_elem;
max_len = (size_t)dims[0];
@@ -1517,7 +1515,7 @@ nh5dread_vl_real_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_spac
* Call H5Dread function.
*/
status = H5Dread(c_dset_id, c_mem_type_id, c_mem_space_id, c_file_space_id, c_xfer_prp, c_buf);
- if ( status >=0 ) {
+ if ( status <0 ) goto DONE;
for (i=0; i < num_elem; i++) {
len[i] = (size_t_f)c_buf[i].len;
#if defined (_UNICOS)
@@ -1526,10 +1524,10 @@ nh5dread_vl_real_c ( hid_t_f *dset_id , hid_t_f *mem_type_id, hid_t_f *mem_spac
memcpy(&buf[i*max_len], c_buf[i].p, c_buf[i].len*sizeof(float));
#endif
}
- }
- ret_value = num_elem;
-DONE:
+
H5Dvlen_reclaim(c_mem_type_id, c_mem_space_id, H5P_DEFAULT, c_buf);
+ ret_value = 0;
+DONE:
free(c_buf);
return ret_value;
}