diff --git a/src/userdata/cell.rs b/src/userdata/cell.rs index 5bd382f..40025fa 100644 --- a/src/userdata/cell.rs +++ b/src/userdata/cell.rs @@ -13,7 +13,7 @@ use super::r#ref::{UserDataRef, UserDataRefMut}; type DynSerialize = dyn erased_serde::Serialize; #[cfg(all(feature = "serde", feature = "send"))] -type DynSerialize = dyn erased_serde::Serialize + Send; +type DynSerialize = dyn erased_serde::Serialize + Send + Sync; pub(crate) enum UserDataStorage { Owned(UserDataVariant), diff --git a/src/userdata/lock.rs b/src/userdata/lock.rs index e0e5d1a..b749ed7 100644 --- a/src/userdata/lock.rs +++ b/src/userdata/lock.rs @@ -72,7 +72,7 @@ mod lock_impl { #[inline(always)] fn try_lock_shared(&self) -> bool { - let flag = self.get().wrapping_add(1); + let flag = self.get().checked_add(1).expect("userdata lock count overflow"); if flag <= UNUSED { return false; }