summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMica White <botahamec@outlook.com>2024-03-14 22:00:08 -0400
committerMica White <botahamec@outlook.com>2024-03-14 22:00:08 -0400
commitbf0b861619d378c6e6f571a1709697d18987b21d (patch)
tree209e3d20db16fc16830bd3eab864dd91bf67d465
parentfaebe204daff3747374c2a3141029f35de2fdc1f (diff)
Fix another bug
-rw-r--r--Cargo.toml2
-rw-r--r--src/lockable.rs14
2 files changed, 8 insertions, 8 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 3c63104..6812feb 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "happylock"
-version = "0.1.3"
+version = "0.1.4"
authors = ["Mica White <botahamec@outlook.com>"]
edition = "2021"
description = "Free deadlock prevention"
diff --git a/src/lockable.rs b/src/lockable.rs
index 1b1c15c..611f0a0 100644
--- a/src/lockable.rs
+++ b/src/lockable.rs
@@ -62,15 +62,15 @@ unsafe impl<'a, T: Lockable<'a>> Lockable<'a> for &T {
type Output = T::Output;
fn get_ptrs(&self) -> Vec<usize> {
- (*self).get_ptrs()
+ (**self).get_ptrs()
}
unsafe fn lock(&'a self) -> Self::Output {
- (*self).lock()
+ (**self).lock()
}
unsafe fn try_lock(&'a self) -> Option<Self::Output> {
- (*self).try_lock()
+ (**self).try_lock()
}
}
@@ -501,7 +501,7 @@ unsafe impl<'a, T: Lockable<'a>, const N: usize> Lockable<'a> for [T; N] {
}
outputs[0].write(self[0].lock());
- for i in 0..N {
+ for i in 1..N {
match self[i].try_lock() {
Some(guard) => outputs[i].write(guard),
None => {
@@ -529,7 +529,7 @@ unsafe impl<'a, T: Lockable<'a>, const N: usize> Lockable<'a> for [T; N] {
}
let mut outputs = MaybeUninit::<[MaybeUninit<T::Output>; N]>::uninit().assume_init();
- for i in 0..N {
+ for i in 1..N {
match self[i].try_lock() {
Some(guard) => outputs[i].write(guard),
None => {
@@ -563,7 +563,7 @@ unsafe impl<'a, T: Lockable<'a>> Lockable<'a> for Box<[T]> {
let mut outputs = Vec::with_capacity(self.len());
outputs.push(self[0].lock());
- for lock in self.iter() {
+ for lock in self.iter().skip(1) {
match lock.try_lock() {
Some(guard) => {
outputs.push(guard);
@@ -613,7 +613,7 @@ unsafe impl<'a, T: Lockable<'a>> Lockable<'a> for Vec<T> {
let mut outputs = Vec::with_capacity(self.len());
outputs.push(self[0].lock());
- for lock in self {
+ for lock in self.iter().skip(1) {
match lock.try_lock() {
Some(guard) => {
outputs.push(guard);