Changeset: 5af8c49ef07d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5af8c49ef07d Modified Files: sql/backends/monet5/bam/bam_loader.c sql/backends/monet5/bam/bam_wrapper.c Branch: Oct2014 Log Message:
Coverity-inspired fixes. diffs (274 lines): diff --git a/sql/backends/monet5/bam/bam_loader.c b/sql/backends/monet5/bam/bam_loader.c --- a/sql/backends/monet5/bam/bam_loader.c +++ b/sql/backends/monet5/bam/bam_loader.c @@ -81,8 +81,14 @@ create_reader_thread_data(bam_wrapper * sht i; + assert(nr_threads > 0); + if (d == NULL || reader_lock == NULL || cur_file == NULL || failure == NULL) { + GDKfree(d); + GDKfree(reader_lock); + GDKfree(cur_file); + GDKfree(failure); return NULL; } diff --git a/sql/backends/monet5/bam/bam_wrapper.c b/sql/backends/monet5/bam/bam_wrapper.c --- a/sql/backends/monet5/bam/bam_wrapper.c +++ b/sql/backends/monet5/bam/bam_wrapper.c @@ -1783,63 +1783,118 @@ write_aux_bam1_t(bam_wrapper * bw, bam1_ /* Macros for appending data from an alignment struct to binary * files. Note that str msg should be defined in the caller. */ -#define ERR_APPEND_ALIGNMENT(msg, fnc, field) \ - msg = createException(MAL, fnc, \ - "Could not append alignment from file '%s' to binary files: Could not write field '%s' to binary file", \ - bw->file_location, field) +#define ERR_APPEND_ALIGNMENT(msg, fnc, field) \ + do { \ + msg = createException(MAL, fnc, \ + "Could not append alignment from file '%s' to binary files: Could not write field '%s' to binary file", \ + bw->file_location, field); \ + goto cleanup; \ + } while (0) -#define APPEND_ALIGNMENT(msg, fnc, a, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12) { \ - if(!APPEND_LNG(f1, (a).virtual_offset)) ERR_APPEND_ALIGNMENT(msg, fnc, "virtual_offset"); \ - if(f2 != NULL) { \ - if(!APPEND_STR(f2, (a).qname)) ERR_APPEND_ALIGNMENT(msg, fnc, "qname"); \ - } \ - if(!APPEND_SHT(f3, (a).flag)) ERR_APPEND_ALIGNMENT(msg, fnc, "flag"); \ - if(!APPEND_STR(f4, (a).rname)) ERR_APPEND_ALIGNMENT(msg, fnc, "rname"); \ - if(!APPEND_INT(f5, (a).pos)) ERR_APPEND_ALIGNMENT(msg, fnc, "pos"); \ - if(!APPEND_SHT(f6, (a).mapq)) ERR_APPEND_ALIGNMENT(msg, fnc, "mapq"); \ - if(!APPEND_STR(f7, (a).cigar)) ERR_APPEND_ALIGNMENT(msg, fnc, "cigar"); \ - if(!APPEND_STR(f8, (a).rnext)) ERR_APPEND_ALIGNMENT(msg, fnc, "rnext"); \ - if(!APPEND_INT(f9, (a).pnext)) ERR_APPEND_ALIGNMENT(msg, fnc, "pnext"); \ - if(!APPEND_INT(f10, (a).tlen)) ERR_APPEND_ALIGNMENT(msg, fnc, "tlen"); \ - if(!APPEND_STR(f11, (a).seq)) ERR_APPEND_ALIGNMENT(msg, fnc, "seq"); \ - if(!APPEND_STR(f12, (a).qual)) ERR_APPEND_ALIGNMENT(msg, fnc, "qual"); \ -} +#define APPEND_ALIGNMENT(msg, fnc, a, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12) \ + do { \ + if(!APPEND_LNG(f1, (a).virtual_offset)) \ + ERR_APPEND_ALIGNMENT(msg, fnc, "virtual_offset"); \ + if(f2 != NULL) { \ + if(!APPEND_STR(f2, (a).qname)) \ + ERR_APPEND_ALIGNMENT(msg, fnc, "qname"); \ + } \ + if(!APPEND_SHT(f3, (a).flag)) \ + ERR_APPEND_ALIGNMENT(msg, fnc, "flag"); \ + if(!APPEND_STR(f4, (a).rname)) \ + ERR_APPEND_ALIGNMENT(msg, fnc, "rname"); \ + if(!APPEND_INT(f5, (a).pos)) \ + ERR_APPEND_ALIGNMENT(msg, fnc, "pos"); \ + if(!APPEND_SHT(f6, (a).mapq)) \ + ERR_APPEND_ALIGNMENT(msg, fnc, "mapq"); \ + if(!APPEND_STR(f7, (a).cigar)) \ + ERR_APPEND_ALIGNMENT(msg, fnc, "cigar"); \ + if(!APPEND_STR(f8, (a).rnext)) \ + ERR_APPEND_ALIGNMENT(msg, fnc, "rnext"); \ + if(!APPEND_INT(f9, (a).pnext)) \ + ERR_APPEND_ALIGNMENT(msg, fnc, "pnext"); \ + if(!APPEND_INT(f10, (a).tlen)) \ + ERR_APPEND_ALIGNMENT(msg, fnc, "tlen"); \ + if(!APPEND_STR(f11, (a).seq)) \ + ERR_APPEND_ALIGNMENT(msg, fnc, "seq"); \ + if(!APPEND_STR(f12, (a).qual)) \ + ERR_APPEND_ALIGNMENT(msg, fnc, "qual"); \ + } while (0) -#define APPEND_ALIGNMENT_UNPAIRED(msg, fnc, a, bw) { \ - APPEND_ALIGNMENT(msg, fnc, a, bw->alignments[0], bw->alignments[1], bw->alignments[2], \ - bw->alignments[3], bw->alignments[4], bw->alignments[5], bw->alignments[6], bw->alignments[7], \ - bw->alignments[8], bw->alignments[9], bw->alignments[10], bw->alignments[11]) \ -} +#define APPEND_ALIGNMENT_UNPAIRED(msg, fnc, a, bw) \ + APPEND_ALIGNMENT(msg, fnc, a, \ + bw->alignments[0], \ + bw->alignments[1], \ + bw->alignments[2], \ + bw->alignments[3], \ + bw->alignments[4], \ + bw->alignments[5], \ + bw->alignments[6], \ + bw->alignments[7], \ + bw->alignments[8], \ + bw->alignments[9], \ + bw->alignments[10], \ + bw->alignments[11]) -#define APPEND_ALIGNMENT_PRIM_PAIRED_L(msg, fnc, a, bw) { \ - APPEND_ALIGNMENT(msg, fnc, a, bw->alignments_paired_primary[0], bw->alignments_paired_primary[2], \ - bw->alignments_paired_primary[3], bw->alignments_paired_primary[4], bw->alignments_paired_primary[5], \ - bw->alignments_paired_primary[6], bw->alignments_paired_primary[7], bw->alignments_paired_primary[8], \ - bw->alignments_paired_primary[9], bw->alignments_paired_primary[10], bw->alignments_paired_primary[11], \ - bw->alignments_paired_primary[12]) \ -} +#define APPEND_ALIGNMENT_PRIM_PAIRED_L(msg, fnc, a, bw) \ + APPEND_ALIGNMENT(msg, fnc, a, \ + bw->alignments_paired_primary[0], \ + bw->alignments_paired_primary[2], \ + bw->alignments_paired_primary[3], \ + bw->alignments_paired_primary[4], \ + bw->alignments_paired_primary[5], \ + bw->alignments_paired_primary[6], \ + bw->alignments_paired_primary[7], \ + bw->alignments_paired_primary[8], \ + bw->alignments_paired_primary[9], \ + bw->alignments_paired_primary[10], \ + bw->alignments_paired_primary[11], \ + bw->alignments_paired_primary[12]) -#define APPEND_ALIGNMENT_PRIM_PAIRED_R(msg, fnc, a, bw) { \ - APPEND_ALIGNMENT(msg, fnc, a, bw->alignments_paired_primary[1], NULL, bw->alignments_paired_primary[13], \ - bw->alignments_paired_primary[14], bw->alignments_paired_primary[15], bw->alignments_paired_primary[16], \ - bw->alignments_paired_primary[17], bw->alignments_paired_primary[18], bw->alignments_paired_primary[19], \ - bw->alignments_paired_primary[20], bw->alignments_paired_primary[21], bw->alignments_paired_primary[22]) \ -} +#define APPEND_ALIGNMENT_PRIM_PAIRED_R(msg, fnc, a, bw) \ + APPEND_ALIGNMENT(msg, fnc, a, \ + bw->alignments_paired_primary[1], \ + NULL, \ + bw->alignments_paired_primary[13], \ + bw->alignments_paired_primary[14], \ + bw->alignments_paired_primary[15], \ + bw->alignments_paired_primary[16], \ + bw->alignments_paired_primary[17], \ + bw->alignments_paired_primary[18], \ + bw->alignments_paired_primary[19], \ + bw->alignments_paired_primary[20], \ + bw->alignments_paired_primary[21], \ + bw->alignments_paired_primary[22]) -#define APPEND_ALIGNMENT_SECO_PAIRED_L(msg, fnc, a, bw) { \ - APPEND_ALIGNMENT(msg, fnc, a, bw->alignments_paired_secondary[0], bw->alignments_paired_secondary[2], \ - bw->alignments_paired_secondary[3], bw->alignments_paired_secondary[4], bw->alignments_paired_secondary[5], \ - bw->alignments_paired_secondary[6], bw->alignments_paired_secondary[7], bw->alignments_paired_secondary[8], \ - bw->alignments_paired_secondary[9], bw->alignments_paired_secondary[10], bw->alignments_paired_secondary[11], \ - bw->alignments_paired_secondary[12]) \ -} +#define APPEND_ALIGNMENT_SECO_PAIRED_L(msg, fnc, a, bw) \ + APPEND_ALIGNMENT(msg, fnc, a, \ + bw->alignments_paired_secondary[0], \ + bw->alignments_paired_secondary[2], \ + bw->alignments_paired_secondary[3], \ + bw->alignments_paired_secondary[4], \ + bw->alignments_paired_secondary[5], \ + bw->alignments_paired_secondary[6], \ + bw->alignments_paired_secondary[7], \ + bw->alignments_paired_secondary[8], \ + bw->alignments_paired_secondary[9], \ + bw->alignments_paired_secondary[10], \ + bw->alignments_paired_secondary[11], \ + bw->alignments_paired_secondary[12]) -#define APPEND_ALIGNMENT_SECO_PAIRED_R(msg, fnc, a, bw) { \ - APPEND_ALIGNMENT(msg, fnc, a, bw->alignments_paired_secondary[1], NULL, bw->alignments_paired_secondary[13], \ - bw->alignments_paired_secondary[14], bw->alignments_paired_secondary[15], bw->alignments_paired_secondary[16], \ - bw->alignments_paired_secondary[17], bw->alignments_paired_secondary[18], bw->alignments_paired_secondary[19], \ - bw->alignments_paired_secondary[20], bw->alignments_paired_secondary[21], bw->alignments_paired_secondary[22]) \ -} +#define APPEND_ALIGNMENT_SECO_PAIRED_R(msg, fnc, a, bw) \ + APPEND_ALIGNMENT(msg, fnc, a, \ + bw->alignments_paired_secondary[1], \ + NULL, \ + bw->alignments_paired_secondary[13], \ + bw->alignments_paired_secondary[14], \ + bw->alignments_paired_secondary[15], \ + bw->alignments_paired_secondary[16], \ + bw->alignments_paired_secondary[17], \ + bw->alignments_paired_secondary[18], \ + bw->alignments_paired_secondary[19], \ + bw->alignments_paired_secondary[20], \ + bw->alignments_paired_secondary[21], \ + bw->alignments_paired_secondary[22]) @@ -1878,13 +1933,8 @@ complete_qname_group(alignment ** alignm && prim_last_segm != NULL) { APPEND_ALIGNMENT_PRIM_PAIRED_L(msg, "complete_qname_group", *prim_firs_segm, bw); - if (msg != MAL_SUCCEED) - return msg; - APPEND_ALIGNMENT_PRIM_PAIRED_R(msg, "complete_qname_group", *prim_last_segm, bw); - if (msg != MAL_SUCCEED) - return msg; prim_firs_segm->written = TRUE; prim_last_segm->written = TRUE; @@ -1922,29 +1972,19 @@ complete_qname_group(alignment ** alignm "complete_qname_group", *a, bw); - if (msg != MAL_SUCCEED) - return msg; - APPEND_ALIGNMENT_SECO_PAIRED_R(msg, "complete_qname_group", *a2, bw); - if (msg != MAL_SUCCEED) - return msg; } else { APPEND_ALIGNMENT_SECO_PAIRED_L(msg, "complete_qname_group", *a2, bw); - if (msg != MAL_SUCCEED) - return msg; - APPEND_ALIGNMENT_SECO_PAIRED_R(msg, "complete_qname_group", *a, bw); - if (msg != MAL_SUCCEED) - return msg; } a->written = TRUE; a2->written = TRUE; @@ -1958,8 +1998,6 @@ complete_qname_group(alignment ** alignm if (!alignments[i]->written) { APPEND_ALIGNMENT_UNPAIRED(msg, "complete_qname_group", *alignments[i], bw); - if (msg != MAL_SUCCEED) - return msg; alignments[i]->written = TRUE; ++bw->cnt_alignments; @@ -1967,6 +2005,9 @@ complete_qname_group(alignment ** alignm } return MAL_SUCCEED; + +cleanup: + return msg; } #define BAMSAM_TELL(bw) (bw->type == BAM ? bam_tell(bw->bam.input) : (bw->cnt_alignments_total + 1)) @@ -2082,9 +2123,6 @@ process_alignments(bam_wrapper * bw, bit /* Write data directly if we are loading into the sfw storage schema */ APPEND_ALIGNMENT_UNPAIRED(msg, "process_alignments", *a, bw); ++bw->cnt_alignments; - if (msg != MAL_SUCCEED) { - goto cleanup; - } } /* Always write auxiliary data immediately */ @@ -2118,9 +2156,6 @@ process_alignments(bam_wrapper * bw, bit APPEND_ALIGNMENT_UNPAIRED(msg, "process_alignments", *a, bw); - if (msg != MAL_SUCCEED) { - goto cleanup; - } a->written = TRUE; ++bw->cnt_alignments; } else { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list