summaryrefslogtreecommitdiffstats
path: root/hl/src/H5TB.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2012-10-17 19:31:44 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2012-10-17 19:31:44 (GMT)
commit14d87e20ff975e1849282a826e83a8c712e0b1ae (patch)
tree9a38f1f31643a27f3508ae26efdfef53169f824b /hl/src/H5TB.c
parente1fb770277310eefbbe0650656e3007366ddf585 (diff)
downloadhdf5-14d87e20ff975e1849282a826e83a8c712e0b1ae.zip
hdf5-14d87e20ff975e1849282a826e83a8c712e0b1ae.tar.gz
hdf5-14d87e20ff975e1849282a826e83a8c712e0b1ae.tar.bz2
[svn-r22916] Description:
Bring r22915 from trunk to 1.8 branch: 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 7df8059..1ba9073 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;
@@ -1315,8 +1314,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];
/*-------------------------------------------------------------------------
@@ -1326,23 +1325,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)
@@ -1354,14 +1350,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
@@ -1411,30 +1405,33 @@ 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
{
H5Dclose(did);
H5Tclose(tid);
H5Sclose(sid);
+ H5Sclose(m_sid);
} H5E_END_TRY;
return -1;
-
-
}
/*-------------------------------------------------------------------------
@@ -1633,10 +1630,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
@@ -1645,17 +1642,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
@@ -1664,7 +1660,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)
@@ -1678,7 +1674,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;
@@ -1711,18 +1708,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);
@@ -3371,7 +3377,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;
}