Skip to content

Commit 9e86254

Browse files
committed
change for loop through unprocessed mates to while loop, erase elements successively
1 parent d6ae5a9 commit 9e86254

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/read_mismatchbam_cpp.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -715,9 +715,8 @@ Rcpp::List read_mismatchbam_cpp(std::string inname_str,
715715
}
716716
}
717717
// process remaining (unpaired) records in curr_records
718-
for (curr_records_it = curr_records.begin();
719-
curr_records_it != curr_records.end();
720-
curr_records_it++) {
718+
while (!curr_records.empty()) {
719+
curr_records_it = curr_records.begin();
721720
bamdata2 = curr_records_it->second;
722721

723722
if ((n_alns_to_sample == 0) || (dis(gen) < keep_aln_fraction)) {
@@ -762,6 +761,7 @@ Rcpp::List read_mismatchbam_cpp(std::string inname_str,
762761
bam_destroy1(bamdata2);
763762
bamdata2 = NULL;
764763
}
764+
curr_records.erase(curr_records_it);
765765

766766
if (verbose && CLI_SHOULD_TICK) { // # nocov start
767767
cli_progress_set(bar, (double)alncnt);
@@ -890,6 +890,13 @@ Rcpp::List read_mismatchbam_cpp(std::string inname_str,
890890
if (idx) {
891891
hts_idx_destroy(idx);
892892
}
893+
for (curr_records_it = curr_records.begin();
894+
curr_records_it != curr_records.end();
895+
curr_records_it++) {
896+
if (curr_records_it->second) {
897+
bam_destroy1(curr_records_it->second);
898+
}
899+
}
893900
if (curr_records.size() > 0) {
894901
curr_records.clear();
895902
}

0 commit comments

Comments
 (0)