summary refs log tree commit diff
path: root/src/test/run-fail/too-much-recursion-unwinding.rs
blob: b483a5eb10a54bea9d6f141d1b113ebcfd14f520 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// error-pattern:ran out of stack
// xfail-test - right now we leak when we fail during failure

// Test that the task fails after hiting the recursion limit
// durnig unwinding

fn recurse() {
    log(debug, "don't optimize me out");
    recurse();
}

class r {
  let recursed: *mut bool;
  new(recursed: *mut bool) unsafe { self.recursed = recursed; }
  drop unsafe { 
    if !*recursed {
        *recursed = true;
        recurse();
    }
  }
}

fn main() {
    let mut recursed = false;
    let _r = r(ptr::mut_addr_of(recursed));
    recurse();
}