summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/collection/boxed.rs4
-rw-r--r--src/collection/ref.rs5
2 files changed, 9 insertions, 0 deletions
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<L: Lockable>(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]))
}