From c4ba826f6ce3e3f273e5aae2132586b69b757c20 Mon Sep 17 00:00:00 2001 From: kitcatier <127749832+kitcatier@users.noreply.github.com> Date: Sat, 22 Apr 2023 12:26:15 +0800 Subject: [PATCH] Marked reserve function as unsafe --- src/webcore/global_arena.rs | 2 +- src/webcore/serialization.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/webcore/global_arena.rs b/src/webcore/global_arena.rs index 79bea4b5..3462103e 100644 --- a/src/webcore/global_arena.rs +++ b/src/webcore/global_arena.rs @@ -66,7 +66,7 @@ pub fn serialize_value< 'a >( value: Value ) -> SerializedValue< 'a > { } #[inline] -pub fn reserve< 'a, T >( length: usize ) -> RelativeSlice< 'a, T > { +pub unsafe fn reserve< 'a, T >( length: usize ) -> RelativeSlice< 'a, T > { unsafe { let offset = reserve_impl( length * mem::size_of::< T >(), mem::align_of::< T >() ); debug_assert_eq!( ARENA.memory.offset( offset as isize ) as usize % mem::align_of::< T >(), 0 ); diff --git a/src/webcore/serialization.rs b/src/webcore/serialization.rs index 4f97d058..1c8956a7 100644 --- a/src/webcore/serialization.rs +++ b/src/webcore/serialization.rs @@ -707,7 +707,7 @@ impl< T: JsSerialize > JsSerialize for [T] { #[doc(hidden)] #[inline] fn _into_js< 'a >( &'a self ) -> SerializedValue< 'a > { - let mut output = global_arena::reserve( self.len() ); + let mut output = unsafe { global_arena::reserve( self.len() ) }; for value in self { unsafe { output.append( value._into_js() ); @@ -734,8 +734,8 @@ impl< T: JsSerialize > JsSerialize for Vec< T > { __js_serializable_boilerplate!( impl< T > for Vec< T > where T: JsSerialize ); fn object_into_js< 'a, K: AsRef< str >, V: 'a + JsSerialize, I: Iterator< Item = (K, &'a V) > + ExactSizeIterator >( iter: I ) -> SerializedValue< 'a > { - let mut keys = global_arena::reserve( iter.len() ); - let mut values = global_arena::reserve( iter.len() ); + let mut keys = unsafe { global_arena::reserve( iter.len() ) }; + let mut values = unsafe { global_arena::reserve( iter.len() ) }; for (key, value) in iter { unsafe { keys.append( key.as_ref()._into_js().as_string().clone() );