File tree Expand file tree Collapse file tree 2 files changed +14
-10
lines changed Expand file tree Collapse file tree 2 files changed +14
-10
lines changed Original file line number Diff line number Diff line change
1
+ Fix 128-bit int regression on big-endian platforms with Python <3.13
Original file line number Diff line number Diff line change @@ -238,15 +238,18 @@ mod fast_128bit_int_conversion {
238
238
unsafe { ffi:: PyNumber_Index ( ob. as_ptr( ) ) . assume_owned_or_err( ob. py( ) ) ? } ;
239
239
let mut buffer = [ 0u8 ; std:: mem:: size_of:: <$rust_type>( ) ] ;
240
240
#[ cfg( not( Py_3_13 ) ) ]
241
- crate :: err:: error_on_minusone( ob. py( ) , unsafe {
242
- ffi:: _PyLong_AsByteArray(
243
- num. as_ptr( ) as * mut ffi:: PyLongObject ,
244
- buffer. as_mut_ptr( ) ,
245
- buffer. len( ) ,
246
- 1 ,
247
- $is_signed. into( ) ,
248
- )
249
- } ) ?;
241
+ {
242
+ crate :: err:: error_on_minusone( ob. py( ) , unsafe {
243
+ ffi:: _PyLong_AsByteArray(
244
+ num. as_ptr( ) as * mut ffi:: PyLongObject ,
245
+ buffer. as_mut_ptr( ) ,
246
+ buffer. len( ) ,
247
+ 1 ,
248
+ $is_signed. into( ) ,
249
+ )
250
+ } ) ?;
251
+ Ok ( <$rust_type>:: from_le_bytes( buffer) )
252
+ }
250
253
#[ cfg( Py_3_13 ) ]
251
254
{
252
255
let mut flags = ffi:: Py_ASNATIVEBYTES_NATIVE_ENDIAN ;
@@ -272,8 +275,8 @@ mod fast_128bit_int_conversion {
272
275
"Python int larger than 128 bits" ,
273
276
) ) ;
274
277
}
278
+ Ok ( <$rust_type>:: from_ne_bytes( buffer) )
275
279
}
276
- Ok ( <$rust_type>:: from_ne_bytes( buffer) )
277
280
}
278
281
279
282
#[ cfg( feature = "experimental-inspect" ) ]
You can’t perform that action at this time.
0 commit comments