From 21b644e394b777079d5bcb6a60366023e62e9eb3 Mon Sep 17 00:00:00 2001 From: Igor Katson Date: Sat, 2 Dec 2023 13:01:50 +0000 Subject: [PATCH] Workaround a crash in dev mode --- crates/librqbit/src/chunk_tracker.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/crates/librqbit/src/chunk_tracker.rs b/crates/librqbit/src/chunk_tracker.rs index 6f0ec5e..dea12e7 100644 --- a/crates/librqbit/src/chunk_tracker.rs +++ b/crates/librqbit/src/chunk_tracker.rs @@ -61,7 +61,14 @@ impl ChunkTracker { pub fn new(needed_pieces: BF, have_pieces: BF, lengths: Lengths) -> Self { // TODO: ideally this needs to be a list based on needed files, e.g. // last needed piece for each file. But let's keep simple for now. - let last_needed_piece_id = needed_pieces.iter_ones().next_back(); + + // TODO: bitvec is bugged, the short version panics. + // let last_needed_piece_id = needed_pieces.iter_ones().next_back(); + let last_needed_piece_id = needed_pieces + .iter() + .enumerate() + .filter_map(|(id, b)| if *b { Some(id) } else { None }) + .last(); // The last pieces first. Often important information is stored in the last piece. // E.g. if it's a video file, than the last piece often contains some index, or just