From c12df09eff1ada614ce5618eb2d050046bc87419 Mon Sep 17 00:00:00 2001 From: Botahamec Date: Wed, 25 Sep 2024 20:38:50 -0400 Subject: Fix panic in contains_duplicates --- src/collection/boxed.rs | 4 ++++ src/collection/ref.rs | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/collection/boxed.rs b/src/collection/boxed.rs index 1f068ec..f8e0fb8 100644 --- a/src/collection/boxed.rs +++ b/src/collection/boxed.rs @@ -11,6 +11,10 @@ use super::{utils, BoxedLockCollection, LockGuard}; /// returns `true` if the sorted list contains a duplicate #[must_use] fn contains_duplicates(l: &[&dyn RawLock]) -> bool { + if l.is_empty() { + return false; + } + l.windows(2) .any(|window| std::ptr::eq(window[0], window[1])) } diff --git a/src/collection/ref.rs b/src/collection/ref.rs index c3a0967..8b9e0f8 100644 --- a/src/collection/ref.rs +++ b/src/collection/ref.rs @@ -17,6 +17,11 @@ pub fn get_locks(data: &L) -> Vec<&dyn RawLock> { /// returns `true` if the sorted list contains a duplicate #[must_use] fn contains_duplicates(l: &[&dyn RawLock]) -> bool { + if l.is_empty() { + // Return early to prevent panic in the below call to `windows` + return false; + } + l.windows(2) .any(|window| std::ptr::eq(window[0], window[1])) } -- cgit v1.2.3