From 39f1148cad97ca1d41838b0fb90dbb9b6762392c Mon Sep 17 00:00:00 2001 From: 409 Date: Sat, 29 Jun 2024 13:44:42 +0200 Subject: [PATCH] fix: crash when a sink input was removed --- src/mixer.rs | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/mixer.rs b/src/mixer.rs index 8901a42..f5d6266 100644 --- a/src/mixer.rs +++ b/src/mixer.rs @@ -238,20 +238,18 @@ impl Mixer { Some(current_index) => { drop(selected_index_lock); - let removed_sink_input_index = self - .sink_inputs - .keys() - .position(|k| *k == sink_index) - .unwrap(); + if let Some(removed_sink_input_index) = + self.sink_inputs.keys().position(|k| *k == sink_index) + { + let current_key = + *self.sink_inputs.keys().nth(current_index).unwrap(); - let current_key = - *self.sink_inputs.keys().nth(current_index).unwrap(); - - if self.sink_inputs.remove(&sink_index).is_some() { - if sink_index == current_key - || removed_sink_input_index > current_index - { - self.select_previous(); + if self.sink_inputs.remove(&sink_index).is_some() { + if sink_index == current_key + || removed_sink_input_index > current_index + { + self.select_previous(); + } } } }