* fixed segfault for unmapped reads
int bam_fillmd(int argc, char *argv[])
{
int bam_fillmd(int argc, char *argv[])
{
- int c, is_equal = 0, tid = -1, ret, len;
+ int c, is_equal = 0, tid = -2, ret, len;
bamFile fp, fpout = 0;
bam_header_t *header;
faidx_t *fai;
bamFile fp, fpout = 0;
bam_header_t *header;
faidx_t *fai;
b = bam_init1();
while ((ret = bam_read1(fp, b)) >= 0) {
b = bam_init1();
while ((ret = bam_read1(fp, b)) >= 0) {
- if (tid != b->core.tid) {
- free(ref);
- ref = fai_fetch(fai, header->target_name[b->core.tid], &len);
- tid = b->core.tid;
+ if (b->core.tid >= 0) {
+ if (tid != b->core.tid) {
+ free(ref);
+ ref = fai_fetch(fai, header->target_name[b->core.tid], &len);
+ tid = b->core.tid;
+ }
+ bam_fillmd1(b, ref, is_equal);
- bam_fillmd1(b, ref, is_equal);
bam_write1(fpout, b);
}
bam_destroy1(b);
bam_write1(fpout, b);
}
bam_destroy1(b);
#include "bam.h"
#ifndef PACKAGE_VERSION
#include "bam.h"
#ifndef PACKAGE_VERSION
-#define PACKAGE_VERSION "0.1.3-5 (r243)"
+#define PACKAGE_VERSION "0.1.3-6 (r244)"
#endif
int bam_taf2baf(int argc, char *argv[]);
#endif
int bam_taf2baf(int argc, char *argv[]);
fprintf(stderr, " index index alignment\n");
fprintf(stderr, " fixmate fix mate information\n");
fprintf(stderr, " rmdup remove PCR duplicates\n");
fprintf(stderr, " index index alignment\n");
fprintf(stderr, " fixmate fix mate information\n");
fprintf(stderr, " rmdup remove PCR duplicates\n");
- fprintf(stderr, " glfview print GLFv2 file\n");
+ fprintf(stderr, " glfview print GLFv3 file\n");
fprintf(stderr, " flagstat simple stats\n");
fprintf(stderr, " fillmd fill the MD tag and change identical base to =\n");
fprintf(stderr, "\n");
fprintf(stderr, " flagstat simple stats\n");
fprintf(stderr, " fillmd fill the MD tag and change identical base to =\n");
fprintf(stderr, "\n");