blob: 69dc5e31dedd522b651325d4ba20419c684b4570 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// expect error: zy: use after free from line 9
// spec 3.7.4 and 4.11: under memdebug the same stale index is a use after free
memdebug
on;
include rt;
void pn(int x) { rt.put_n(x); rt.put_c(10); }
int g;
// unchecked: the analyzer stays out, so the block is freed (quarantined, with its check word) rather than recycled
unchecked int make() { let p = rt.new(5); p[4] = 1; g = p; return 0; }
unchecked int drop() { let p = g; rt.free(p); return 0; }
fn main() {
word* q; int i = 4;
make(); q = g as word*; pn(q[i]);
drop(); q = g as word*; pn(q[i]);
return 0;
}
// zc0: skip
|