@@ -825,6 +825,8 @@ pub extern "C" fn processing_geometry_index_count(geo_id: u64) -> u32 {
825825 error:: check ( || geometry_index_count ( entity) ) . unwrap_or ( 0 )
826826}
827827
828+ /// # Safety
829+ /// - `out` must be valid for writes of `out_len` elements.
828830#[ unsafe( no_mangle) ]
829831pub unsafe extern "C" fn processing_geometry_get_positions (
830832 geo_id : u64 ,
@@ -839,13 +841,15 @@ pub unsafe extern "C" fn processing_geometry_get_positions(
839841 match positions {
840842 Some ( p) => {
841843 let count = p. len ( ) . min ( out_len as usize ) ;
842- std:: ptr:: copy_nonoverlapping ( p. as_ptr ( ) , out, count) ;
844+ unsafe { std:: ptr:: copy_nonoverlapping ( p. as_ptr ( ) , out, count) } ;
843845 count as u32
844846 }
845847 None => 0 ,
846848 }
847849}
848850
851+ /// # Safety
852+ /// - `out` must be valid for writes of `out_len` elements.
849853#[ unsafe( no_mangle) ]
850854pub unsafe extern "C" fn processing_geometry_get_normals (
851855 geo_id : u64 ,
@@ -860,13 +864,15 @@ pub unsafe extern "C" fn processing_geometry_get_normals(
860864 match normals {
861865 Some ( n) => {
862866 let count = n. len ( ) . min ( out_len as usize ) ;
863- std:: ptr:: copy_nonoverlapping ( n. as_ptr ( ) , out, count) ;
867+ unsafe { std:: ptr:: copy_nonoverlapping ( n. as_ptr ( ) , out, count) } ;
864868 count as u32
865869 }
866870 None => 0 ,
867871 }
868872}
869873
874+ /// # Safety
875+ /// - `out` must be valid for writes of `out_len` elements.
870876#[ unsafe( no_mangle) ]
871877pub unsafe extern "C" fn processing_geometry_get_colors (
872878 geo_id : u64 ,
@@ -881,13 +887,15 @@ pub unsafe extern "C" fn processing_geometry_get_colors(
881887 match colors {
882888 Some ( c) => {
883889 let count = c. len ( ) . min ( out_len as usize ) ;
884- std:: ptr:: copy_nonoverlapping ( c. as_ptr ( ) , out, count) ;
890+ unsafe { std:: ptr:: copy_nonoverlapping ( c. as_ptr ( ) , out, count) } ;
885891 count as u32
886892 }
887893 None => 0 ,
888894 }
889895}
890896
897+ /// # Safety
898+ /// - `out` must be valid for writes of `out_len` elements.
891899#[ unsafe( no_mangle) ]
892900pub unsafe extern "C" fn processing_geometry_get_uvs (
893901 geo_id : u64 ,
@@ -902,13 +910,15 @@ pub unsafe extern "C" fn processing_geometry_get_uvs(
902910 match uvs {
903911 Some ( u) => {
904912 let count = u. len ( ) . min ( out_len as usize ) ;
905- std:: ptr:: copy_nonoverlapping ( u. as_ptr ( ) , out, count) ;
913+ unsafe { std:: ptr:: copy_nonoverlapping ( u. as_ptr ( ) , out, count) } ;
906914 count as u32
907915 }
908916 None => 0 ,
909917 }
910918}
911919
920+ /// # Safety
921+ /// - `out` must be valid for writes of `out_len` elements.
912922#[ unsafe( no_mangle) ]
913923pub unsafe extern "C" fn processing_geometry_get_indices (
914924 geo_id : u64 ,
@@ -923,7 +933,7 @@ pub unsafe extern "C" fn processing_geometry_get_indices(
923933 match indices {
924934 Some ( i) => {
925935 let count = i. len ( ) . min ( out_len as usize ) ;
926- std:: ptr:: copy_nonoverlapping ( i. as_ptr ( ) , out, count) ;
936+ unsafe { std:: ptr:: copy_nonoverlapping ( i. as_ptr ( ) , out, count) } ;
927937 count as u32
928938 }
929939 None => 0 ,
0 commit comments