diff --git a/src/lib.rs b/src/lib.rs index 9b7a0398e436a805d8b4b79082ff7aeef8a62fce..7ebc3e564514550bc1b72afc768e8f12e6689e8c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -138,12 +138,13 @@ where Err(Error::Uninitialized) } else { interrupt_free(|| unsafe { - let index = *self.head.get_mut_unchecked(); - *self.head.get_mut_unchecked() = - *self.free.get_mut_unchecked().get_unchecked(index); - if *self.head.get_mut_unchecked() > S { + if *self.head.get_mut_unchecked() >= S { Err(Error::OutOfMemory) } else { + let index = *self.head.get_mut_unchecked(); + *self.head.get_mut_unchecked() = + *self.free.get_mut_unchecked().get_unchecked(index); + Ok(Box { index, allocator: self,