diff --git a/libafl_bolts/src/llmp.rs b/libafl_bolts/src/llmp.rs index d8019861f2..1e7354573c 100644 --- a/libafl_bolts/src/llmp.rs +++ b/libafl_bolts/src/llmp.rs @@ -1922,35 +1922,6 @@ where shmem_provider: SP, } -#[inline] -fn binary_search( - llmp_clients: &Vec>, - client_id: ClientId, -) -> Option { - if llmp_clients.is_empty() { - return None; - } - - let mut left = 0; - let mut right = llmp_clients.len().checked_sub(1)?; - - loop { - if left > right { - break; - } - - let mid = left + (right - left) / 2; - - match client_id { - id if id == llmp_clients[mid].id => return Some(llmp_clients[mid].id.0 as _), - id if id > llmp_clients[mid].id => left = mid + 1, - _ => right = mid.checked_sub(1).expect("invalid right edge"), - } - } - - None -} - /// A signal handler for the [`LlmpBroker`]. #[cfg(unix)] #[derive(Debug, Clone)] @@ -2715,8 +2686,9 @@ where // Fast path when no client was removed client_id.0 as usize } else { - binary_search(&self.llmp_clients, client_id) - .expect("Fatal error, client ID not found") + self.llmp_clients + .binary_search_by_key(&client_id, |x| x.id) + .expect("Fatal error, client ID {client_id} not found in llmp_clients.") }; let client = &mut self.llmp_clients[pos]; match client.recv()? { @@ -2799,8 +2771,9 @@ where // Fast path when no client was removed client_id.0 as usize } else { - binary_search(&self.llmp_clients, client_id) - .expect("Fatal error, client ID not found") + self.llmp_clients + .binary_search_by_key(&client_id, |x| x.id) + .expect("Fatal error, client ID {client_id} not found in llmp_clients.") }; let map = &mut self.llmp_clients[pos].current_recv_shmem;