X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=bam_pileup.c;h=8a75829cf6e92889ed72e2b23f08056abedb516d;hb=aee93c83c1c7ff30c2c959a14877cf8a4e2d8f92;hp=bcc1e9872e12db407e8a436556cf1e91b9350aa9;hpb=a9699b025d1a4b46dd82d2ca77c5c798cc2bd7e3;p=samtools.git diff --git a/bam_pileup.c b/bam_pileup.c index bcc1e98..8a75829 100644 --- a/bam_pileup.c +++ b/bam_pileup.c @@ -229,15 +229,15 @@ const bam_pileup1_t *bam_plp_auto(bam_plp_t iter, int *_tid, int *_pos, int *_n_ { const bam_pileup1_t *plp; if (iter->func == 0 || iter->error) { *_n_plp = -1; return 0; } - if ((plp = bam_plp_next(iter, _n_plp, _tid, _pos)) != 0) return plp; + if ((plp = bam_plp_next(iter, _tid, _pos, _n_plp)) != 0) return plp; else { *_n_plp = 0; - while (iter->func(iter->b, iter->data) >= 0) { + while (iter->func(iter->data, iter->b) >= 0) { if (bam_plp_push(iter, iter->b) < 0) { *_n_plp = -1; return 0; } - if ((plp = bam_plp_next(iter, _n_plp, _tid, _pos)) != 0) return plp; + if ((plp = bam_plp_next(iter, _tid, _pos, _n_plp)) != 0) return plp; } return 0; } @@ -339,10 +339,13 @@ bam_mplp_t bam_mplp_init(int n, bam_plp_auto_f func, void **data) iter->pos = calloc(n, 8); iter->n_plp = calloc(n, sizeof(int)); iter->plp = calloc(n, sizeof(void*)); + iter->iter = calloc(n, sizeof(void*)); iter->n = n; iter->min = (uint64_t)-1; - for (i = 0; i < n; ++i) + for (i = 0; i < n; ++i) { iter->iter[i] = bam_plp_init(func, data[i]); + iter->pos[i] = iter->min; + } return iter; }