File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ extern crate libcc2rs;
2+ use libcc2rs:: * ;
3+ use std:: cell:: RefCell ;
4+ use std:: collections:: BTreeMap ;
5+ use std:: io:: prelude:: * ;
6+ use std:: io:: { Read , Seek , Write } ;
7+ use std:: os:: fd:: AsFd ;
8+ use std:: rc:: { Rc , Weak } ;
9+ pub fn main ( ) {
10+ std:: process:: exit ( main_0 ( ) ) ;
11+ }
12+ fn main_0 ( ) -> i32 {
13+ let outer: Value < Vec < Value < Vec < i32 > > > > = Rc :: new ( RefCell :: new ( Vec :: new ( ) ) ) ;
14+ let inner: Value < Vec < i32 > > = Rc :: new ( RefCell :: new ( Vec :: new ( ) ) ) ;
15+ ( outer. as_pointer ( ) as Ptr < Vec < Value < Vec < i32 > > > > ) . with_mut ( |__v : & mut Vec < Value < Vec < i32 > > > | {
16+ __v. push ( Rc :: new ( RefCell :: new ( ( * inner. borrow ( ) ) . clone ( ) ) ) )
17+ } ) ;
18+ let sink: Value < Ptr < Vec < i32 > > > = Rc :: new ( RefCell :: new (
19+ ( ( * outer. borrow ( ) ) [ ( * outer. borrow ( ) ) . len ( ) - 1 ] . as_pointer ( ) ) ,
20+ ) ) ;
21+ assert ! ( ( ( * ( * sink. borrow( ) ) . upgrade( ) . deref( ) ) . len( ) as u64 == 0_u64 ) ) ;
22+ return 0 ;
23+ }
Original file line number Diff line number Diff line change 1+ extern crate libc;
2+ use libc:: * ;
3+ extern crate libcc2rs;
4+ use libcc2rs:: * ;
5+ use std:: collections:: BTreeMap ;
6+ use std:: io:: { Read , Seek , Write } ;
7+ use std:: os:: fd:: { AsFd , FromRawFd , IntoRawFd } ;
8+ use std:: rc:: Rc ;
9+ pub fn main ( ) {
10+ unsafe {
11+ std:: process:: exit ( main_0 ( ) as i32 ) ;
12+ }
13+ }
14+ unsafe fn main_0 ( ) -> i32 {
15+ let mut outer: Vec < Vec < i32 > > = Vec :: new ( ) ;
16+ let mut inner: Vec < i32 > = Vec :: new ( ) ;
17+ outer. push ( inner. clone ( ) ) ;
18+ let mut sink: * mut Vec < i32 > = ( ( outer) . last_mut ( ) . unwrap ( ) ) ;
19+ assert ! ( ( ( ( * sink. cast_const( ) ) . len( ) as u64 ) == ( 0_u64 ) ) ) ;
20+ return 0 ;
21+ }
Original file line number Diff line number Diff line change 1+ #include < assert.h>
2+ #include < vector>
3+
4+ int main () {
5+ std::vector<std::vector<int >> outer;
6+ std::vector<int > inner;
7+ outer.push_back (inner);
8+ auto *sink = &outer.back ();
9+ assert (sink->size () == 0 );
10+ return 0 ;
11+ }
You can’t perform that action at this time.
0 commit comments