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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list