@@ -502,7 +502,10 @@ impl<T: ?Sized> NonNull<T> {
502
502
#[ cfg_attr( miri, track_caller) ] // even without panics, this helps for Miri backtraces
503
503
#[ stable( feature = "non_null_convenience" , since = "1.80.0" ) ]
504
504
#[ rustc_const_stable( feature = "non_null_convenience" , since = "1.80.0" ) ]
505
- #[ kani:: requires( kani:: mem:: same_allocation( self . as_ptr( ) as * const ( ) , self . as_ptr( ) . byte_offset( count) as * const ( ) ) ) ]
505
+ #[ kani:: requires(
506
+ count <= isize :: MAX &&
507
+ kani:: mem:: same_allocation( self . as_ptr( ) as * const ( ) , self . as_ptr( ) . byte_offset( count) as * const ( ) )
508
+ ) ]
506
509
#[ kani:: ensures( |result: & Self | result. as_ptr( ) == self . as_ptr( ) . byte_offset( count) ) ]
507
510
pub const unsafe fn byte_offset ( self , count : isize ) -> Self {
508
511
// SAFETY: the caller must uphold the safety contract for `offset` and `byte_offset` has
@@ -581,10 +584,10 @@ impl<T: ?Sized> NonNull<T> {
581
584
#[ rustc_allow_const_fn_unstable( set_ptr_value) ]
582
585
#[ stable( feature = "non_null_convenience" , since = "1.80.0" ) ]
583
586
#[ rustc_const_stable( feature = "non_null_convenience" , since = "1.80.0" ) ]
584
- #[ kani:: requires( kani :: mem :: same_allocation (
585
- self . as_ptr ( ) as * const ( ) ,
586
- ( ( self . as_ptr( ) as * const ( ) as usize ) + count) as * const ( )
587
- ) ) ]
587
+ #[ kani:: requires(
588
+ count <= usize :: MAX &&
589
+ kani :: mem :: same_allocation ( self . as_ptr( ) as * const ( ) , ( self . as_ptr ( ) . byte_add ( count) ) as * const ( ) )
590
+ ) ]
588
591
#[ kani:: ensures(
589
592
|result: & NonNull <T >|
590
593
( result. as_ptr( ) as * const ( ) as usize ) == ( ( self . as_ptr( ) as * const ( ) as usize ) + count)
@@ -1829,9 +1832,6 @@ mod verify {
1829
1832
let ptr = unsafe { NonNull :: new ( raw_ptr. add ( offset) ) . unwrap ( ) } ;
1830
1833
let count: usize = kani:: any ( ) ;
1831
1834
1832
- kani:: assume ( count. checked_mul ( mem:: size_of :: < i32 > ( ) ) . is_some ( ) ) ;
1833
- kani:: assume ( count * mem:: size_of :: < i32 > ( ) <= ( isize:: MAX as usize ) ) ;
1834
-
1835
1835
unsafe {
1836
1836
let result = ptr. byte_add ( count) ;
1837
1837
}
@@ -1846,8 +1846,6 @@ mod verify {
1846
1846
let ptr = unsafe { NonNull :: new ( raw_ptr. add ( offset) ) . unwrap ( ) } ;
1847
1847
let count: isize = kani:: any ( ) ;
1848
1848
1849
- kani:: assume ( count. checked_mul ( mem:: size_of :: < i32 > ( ) as isize ) . is_some ( ) ) ;
1850
- kani:: assume ( count * ( mem:: size_of :: < i32 > ( ) as isize ) <= ( isize:: MAX as isize ) ) ;
1851
1849
unsafe {
1852
1850
let result = ptr. byte_offset ( count) ;
1853
1851
}
0 commit comments