File tree 1 file changed +3
-8
lines changed
1 file changed +3
-8
lines changed Original file line number Diff line number Diff line change @@ -68,19 +68,14 @@ impl Layout {
68
68
pub const fn from_size_align ( size : usize , align : usize ) -> Result < Self , LayoutError > {
69
69
if Layout :: is_size_align_valid ( size, align) {
70
70
// 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) } ) }
73
72
} else {
74
73
Err ( LayoutError )
75
74
}
76
75
}
77
76
78
77
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 } ;
84
79
if size > Self :: max_size_for_align ( align) {
85
80
return false ;
86
81
}
@@ -139,7 +134,7 @@ impl Layout {
139
134
) => Layout :: is_size_align_valid( size, align)
140
135
) ;
141
136
// 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) } }
143
138
}
144
139
145
140
/// The minimum size in bytes for a memory block of this layout.
You can’t perform that action at this time.
0 commit comments