@@ -16,7 +16,7 @@ fn main_0() -> i32 {
1616 . offset ( ( 3 ) as isize )
1717 . get_offset ( )
1818 - ( src. as_pointer ( ) as Ptr < u32 > ) . get_offset ( ) ;
19- PtrValueIter :: new ( ( src. as_pointer ( ) as Ptr < u32 > ) . clone ( ) , __count)
19+ PtrValueIter :: new ( & ( src. as_pointer ( ) as Ptr < u32 > ) , __count)
2020 . map ( |item| u32:: try_from ( item) . ok ( ) . unwrap ( ) )
2121 . collect :: < Vec < _ > > ( )
2222 } ) ) ;
@@ -31,7 +31,7 @@ fn main_0() -> i32 {
3131 . offset ( ( 3 ) as isize )
3232 . get_offset ( )
3333 - ( src. as_pointer ( ) as Ptr < u32 > ) . get_offset ( ) ;
34- PtrValueIter :: new ( ( src. as_pointer ( ) as Ptr < u32 > ) . clone ( ) , __count)
34+ PtrValueIter :: new ( & ( src. as_pointer ( ) as Ptr < u32 > ) , __count)
3535 . map ( |item| u64:: try_from ( item) . ok ( ) . unwrap ( ) )
3636 . collect :: < Vec < _ > > ( )
3737 } ) ) ;
@@ -46,7 +46,7 @@ fn main_0() -> i32 {
4646 . offset ( ( 3 ) as isize )
4747 . get_offset ( )
4848 - ( src. as_pointer ( ) as Ptr < u32 > ) . get_offset ( ) ;
49- PtrValueIter :: new ( ( src. as_pointer ( ) as Ptr < u32 > ) . clone ( ) , __count)
49+ PtrValueIter :: new ( & ( src. as_pointer ( ) as Ptr < u32 > ) , __count)
5050 . map ( |item| i32:: try_from ( item) . ok ( ) . unwrap ( ) )
5151 . collect :: < Vec < _ > > ( )
5252 } ) ) ;
@@ -60,13 +60,29 @@ fn main_0() -> i32 {
6060 let v4: Value < Vec < u32 > > = Rc :: new ( RefCell :: new ( {
6161 let __count = ( src1. as_pointer ( ) as Ptr < u32 > ) . to_end ( ) . get_offset ( )
6262 - ( src1. as_pointer ( ) as Ptr < u32 > ) . get_offset ( ) ;
63- PtrValueIter :: new ( ( src1. as_pointer ( ) as Ptr < u32 > ) , __count) . collect :: < Vec < _ > > ( )
63+ PtrValueIter :: new ( & ( src1. as_pointer ( ) as Ptr < u32 > ) , __count) . collect :: < Vec < _ > > ( )
6464 } ) ) ;
6565 assert ! ( ( ( * v4. borrow( ) ) . len( ) as u64 == 3_u64 ) ) ;
6666 assert ! (
6767 ( ( ( ( v4. as_pointer( ) as Ptr <u32 >) . offset( 0_u64 as isize ) . read( ) ) == 1_u32 )
6868 && ( ( ( v4. as_pointer( ) as Ptr <u32 >) . offset( 1_u64 as isize ) . read( ) ) == 2_u32 ) )
6969 && ( ( ( v4. as_pointer( ) as Ptr <u32 >) . offset( 2_u64 as isize ) . read( ) ) == 3_u32 )
7070 ) ;
71+ let buf: Value < Box < [ u8 ] > > =
72+ Rc :: new ( RefCell :: new ( Box :: new ( [ 10_u8 , 20_u8 , 30_u8 , 40_u8 , 50_u8 ] ) ) ) ;
73+ let start: Value < Ptr < u8 > > = Rc :: new ( RefCell :: new ( ( buf. as_pointer ( ) as Ptr < u8 > ) ) ) ;
74+ let len: Value < u64 > = Rc :: new ( RefCell :: new ( 5_u64 ) ) ;
75+ let v5: Value < Vec < u8 > > = Rc :: new ( RefCell :: new ( {
76+ let __count = ( * start. borrow ( ) )
77+ . offset ( ( * len. borrow ( ) ) as isize )
78+ . get_offset ( )
79+ - ( * start. borrow ( ) ) . get_offset ( ) ;
80+ PtrValueIter :: new ( & ( * start. borrow ( ) ) , __count) . collect :: < Vec < _ > > ( )
81+ } ) ) ;
82+ assert ! ( ( ( * v5. borrow( ) ) . len( ) as u64 == 5_u64 ) ) ;
83+ assert ! (
84+ ( ( ( ( v5. as_pointer( ) as Ptr <u8 >) . offset( 0_u64 as isize ) . read( ) ) as i32 ) == 10 )
85+ && ( ( ( ( v5. as_pointer( ) as Ptr <u8 >) . offset( 4_u64 as isize ) . read( ) ) as i32 ) == 50 )
86+ ) ;
7187 return 0 ;
7288}
0 commit comments