File tree Expand file tree Collapse file tree 1 file changed +3
-8
lines changed Expand file tree Collapse file tree 1 file changed +3
-8
lines changed Original file line number Diff line number Diff line change @@ -68,19 +68,14 @@ impl Layout {
6868 pub const fn from_size_align ( size : usize , align : usize ) -> Result < Self , LayoutError > {
6969 if Layout :: is_size_align_valid ( size, align) {
7070 // SAFETY: Layout::is_size_align_valid checks the preconditions for this call.
71- let layout = unsafe { Layout :: from_size_align_unchecked ( size, align) } ;
72- Ok ( layout)
71+ unsafe { Ok ( Layout { size, align : mem:: transmute ( align) } ) }
7372 } else {
7473 Err ( LayoutError )
7574 }
7675 }
7776
7877 const fn is_size_align_valid ( size : usize , align : usize ) -> bool {
79- if !align. is_power_of_two ( ) {
80- return false ;
81- }
82- // SAFETY: Precondition checked directly above.
83- let align = unsafe { Alignment :: new_unchecked ( align) } ;
78+ let Some ( align) = Alignment :: new ( align) else { return false } ;
8479 if size > Self :: max_size_for_align ( align) {
8580 return false ;
8681 }
@@ -139,7 +134,7 @@ impl Layout {
139134 ) => Layout :: is_size_align_valid( size, align)
140135 ) ;
141136 // SAFETY: the caller is required to uphold the preconditions.
142- unsafe { Layout { size, align : Alignment :: new_unchecked ( align) } }
137+ unsafe { Layout { size, align : mem :: transmute ( align) } }
143138 }
144139
145140 /// The minimum size in bytes for a memory block of this layout.
You can’t perform that action at this time.
0 commit comments