summaryrefslogtreecommitdiffstats
path: root/hl/src/H5TB.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2012-10-17 18:41:42 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2012-10-17 18:41:42 (GMT)
commit0324f055660fde2ddbdd928b6b674814a9e53210 (patch)
tree9919843f57d954c35f2743c075c460f8cb1f20e5 /hl/src/H5TB.c
parent1c45b31cc674a38e32a87a168d50249a6875f821 (diff)
downloadhdf5-0324f055660fde2ddbdd928b6b674814a9e53210.zip
hdf5-0324f055660fde2ddbdd928b6b674814a9e53210.tar.gz
hdf5-0324f055660fde2ddbdd928b6b674814a9e53210.tar.bz2
[svn-r22915] Description:
Bring Coverity changes back to trunk: r20399: Change parse_command_line to free hand structure on error and only "leave()" at end of main. r20400: Purpose: Fix coverity issue 592 Description: Added void cast to call to H5F_sfile_assert_num() in H5F_term)interface(). There is no need to check the return value of this function in general, and there would be nothing to do even if it did fail. r20401: Added free(src_sizes) and free(src_offset). --gh Tested on: Mac OSX/64 10.8.2 (amazon) w/C++, FORTRAN, threadsafe (too minor for h5committest)
Diffstat (limited to 'hl/src/H5TB.c')
-rw-r--r--hl/src/H5TB.c100
1 files changed, 53 insertions, 47 deletions
diff --git a/hl/src/H5TB.c b/hl/src/H5TB.c
index 0013e67..0b6305b 100644
--- a/hl/src/H5TB.c
+++ b/hl/src/H5TB.c
@@ -1301,7 +1301,6 @@ herr_t H5TBdelete_record( hid_t loc_id,
hsize_t start,
hsize_t nrecords )
{
-
hsize_t nfields;
hsize_t ntotal_records;
hsize_t read_start;
@@ -1316,8 +1315,8 @@ herr_t H5TBdelete_record( hid_t loc_id,
hsize_t mem_size[1];
unsigned char *tmp_buf=NULL;
size_t src_size;
- size_t *src_offset;
- size_t *src_sizes;
+ size_t *src_offset = NULL;
+ size_t *src_sizes = NULL;
hsize_t dims[1];
/*-------------------------------------------------------------------------
@@ -1327,23 +1326,20 @@ herr_t H5TBdelete_record( hid_t loc_id,
/* get the number of records and fields */
if (H5TBget_table_info ( loc_id, dset_name, &nfields, &ntotal_records ) < 0)
- return -1;
-
- src_offset = (size_t *)malloc((size_t)nfields * sizeof(size_t));
- src_sizes = (size_t *)malloc((size_t)nfields * sizeof(size_t));
+ goto out;
- if (src_offset == NULL )
- return -1;
- if (src_sizes == NULL )
- return -1;
+ if(NULL == (src_offset = (size_t *)malloc((size_t)nfields * sizeof(size_t))))
+ goto out;
+ if(NULL == (src_sizes = (size_t *)malloc((size_t)nfields * sizeof(size_t))))
+ goto out;
/* get field info */
if (H5TBget_field_info( loc_id, dset_name, NULL, src_sizes, src_offset, &src_size ) < 0)
- return -1;
+ goto out;
/* open the dataset. */
if ((did = H5Dopen2(loc_id, dset_name, H5P_DEFAULT)) < 0)
- return -1;
+ goto out;
/*-------------------------------------------------------------------------
* read the records after the deleted one(s)
@@ -1355,14 +1351,12 @@ herr_t H5TBdelete_record( hid_t loc_id,
if ( read_nrecords )
{
- tmp_buf = (unsigned char *)calloc((size_t) read_nrecords, src_size );
-
- if (tmp_buf == NULL )
- return -1;
+ if(NULL == (tmp_buf = (unsigned char *)calloc((size_t) read_nrecords, src_size )))
+ goto out;
/* read the records after the deleted one(s) */
if (H5TBread_records( loc_id, dset_name, read_start, read_nrecords, src_size, src_offset, src_sizes, tmp_buf ) < 0)
- return -1;
+ goto out;
/*-------------------------------------------------------------------------
* write the records in another position
@@ -1418,31 +1412,34 @@ herr_t H5TBdelete_record( hid_t loc_id,
/* close dataset */
if (H5Dclose( did ) < 0)
- return -1;
-
- if (tmp_buf !=NULL)
- free( tmp_buf );
- free( src_offset );
- free( src_sizes );
+ goto out;
+ if(tmp_buf)
+ free(tmp_buf);
+ if(src_offset)
+ free(src_offset);
+ if(src_sizes)
+ free(src_sizes);
return 0;
/* error zone */
out:
-
- if (tmp_buf !=NULL )
- free( tmp_buf );
+ if(tmp_buf)
+ free(tmp_buf);
+ if(src_offset)
+ free(src_offset);
+ if(src_sizes)
+ free(src_sizes);
H5E_BEGIN_TRY
{
H5Tclose(mem_type_id);
H5Dclose(did);
H5Tclose(tid);
H5Sclose(sid);
+ H5Sclose(m_sid);
} H5E_END_TRY;
return -1;
-
-
}
/*-------------------------------------------------------------------------
@@ -1641,10 +1638,10 @@ herr_t H5TBadd_records_from( hid_t loc_id,
hsize_t mem_size[1];
hsize_t nfields;
hsize_t ntotal_records;
- unsigned char *tmp_buf;
+ unsigned char *tmp_buf = NULL;
size_t src_size;
- size_t *src_offset;
- size_t *src_sizes;
+ size_t *src_offset = NULL;
+ size_t *src_sizes = NULL;
/*-------------------------------------------------------------------------
* first we get information about type size and offsets on disk
@@ -1653,17 +1650,16 @@ herr_t H5TBadd_records_from( hid_t loc_id,
/* get the number of records and fields */
if (H5TBget_table_info ( loc_id, dset_name1, &nfields, &ntotal_records ) < 0)
- return -1;
-
- src_offset = (size_t *)malloc((size_t)nfields * sizeof(size_t));
- src_sizes = (size_t *)malloc((size_t)nfields * sizeof(size_t));
+ goto out;
- if (src_offset == NULL )
- return -1;
+ if(NULL == (src_offset = (size_t *)malloc((size_t)nfields * sizeof(size_t))))
+ goto out;
+ if(NULL == (src_sizes = (size_t *)malloc((size_t)nfields * sizeof(size_t))))
+ goto out;
/* get field info */
if (H5TBget_field_info( loc_id, dset_name1, NULL, src_sizes, src_offset, &src_size ) < 0)
- return -1;
+ goto out;
/*-------------------------------------------------------------------------
* Get information about the first table and read it
@@ -1672,7 +1668,7 @@ herr_t H5TBadd_records_from( hid_t loc_id,
/* open the 1st dataset. */
if ((did_1 = H5Dopen2(loc_id, dset_name1, H5P_DEFAULT)) < 0)
- return -1;
+ goto out;
/* get the datatype */
if ((tid_1 = H5Dget_type( did_1 )) < 0)
@@ -1686,7 +1682,8 @@ herr_t H5TBadd_records_from( hid_t loc_id,
if (( type_size1 = H5Tget_size( tid_1 )) == 0 )
goto out;
- tmp_buf = (unsigned char *)calloc((size_t)nrecords, type_size1 );
+ if(NULL == (tmp_buf = (unsigned char *)calloc((size_t)nrecords, type_size1 )))
+ goto out;
/* define a hyperslab in the dataset of the size of the records */
offset[0] = start1;
@@ -1719,18 +1716,27 @@ herr_t H5TBadd_records_from( hid_t loc_id,
if (H5Sclose( sid_1 ) < 0)
goto out;
if (H5Tclose( tid_1 ) < 0)
- return -1;
+ goto out;
if (H5Dclose( did_1 ) < 0)
- return -1;
+ goto out;
- free( tmp_buf );
- free( src_offset );
- free( src_sizes );
+ if(tmp_buf)
+ free(tmp_buf);
+ if(src_offset)
+ free(src_offset);
+ if(src_sizes)
+ free(src_sizes);
return 0;
/* error zone */
out:
+ if(tmp_buf)
+ free(tmp_buf);
+ if(src_offset)
+ free(src_offset);
+ if(src_sizes)
+ free(src_sizes);
H5E_BEGIN_TRY
{
H5Dclose(did_1);
@@ -3379,7 +3385,7 @@ int H5TB_find_field( const char *field, const char *field_list )
{
ptrdiff_t count = end - start;
- if(HDstrncmp(start, field, count) == 0 && count == HDstrlen(field) )
+ if(HDstrncmp(start, field, (size_t)count) == 0 && (size_t)count == HDstrlen(field) )
return 1;
start = end + 1;
}