if access { "memory access" } else { "pointer computed" },
ptr.offset, ptr.alloc_id, allocation_size)
},
- MemoryLockViolation { ptr, len, access, lock } => {
+ MemoryLockViolation { ptr, len, access, ref lock } => {
write!(f, "{:?} access at {:?}, size {}, is in conflict with lock {:?}",
access, ptr, len, lock)
}
write!(f, "tried to release memory write lock at {:?}, size {}, but the write lock is held by someone else",
ptr, len)
}
- DeallocatedLockedMemory { ptr, lock } => {
+ DeallocatedLockedMemory { ptr, ref lock } => {
write!(f, "tried to deallocate memory at {:?} in conflict with lock {:?}",
ptr, lock)
}
}
/// Information about a lock that is or will be held.
-#[derive(Copy, Clone, Debug)]
+#[derive(Clone, Debug)]
pub struct LockInfo {
kind: AccessKind,
lifetime: DynamicLifetime,
for lock in self.iter_locks(offset, len) {
// Check if the lock is active, and is in conflict with the access.
if lock.status == LockStatus::Held && !lock.access_permitted(frame, access) {
- return Err(*lock);
+ return Err(lock.clone());
}
}
Ok(())