diff options
| author | Ariel Ben-Yehuda <ariel.byd@gmail.com> | 2017-05-11 01:02:52 +0300 |
|---|---|---|
| committer | Ariel Ben-Yehuda <ariel.byd@gmail.com> | 2017-05-28 10:43:24 +0300 |
| commit | 9da2aaccfe7dd3452dd066bbc3829af6bd76ace4 (patch) | |
| tree | f911577590ac319c17e22dba38b06d4ad31207d3 /src/test | |
| parent | 5d2512ec5b03a1155054df881e40e35fc87d6351 (diff) | |
| download | rust-9da2aaccfe7dd3452dd066bbc3829af6bd76ace4.tar.gz rust-9da2aaccfe7dd3452dd066bbc3829af6bd76ace4.zip | |
translate array drop glue using MIR
This fixes leakage on panic with arrays & slices. I am using a C-style for-loop instead of a pointer-based loop because that would be ugly-er to implement.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/run-pass/dynamic-drop.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/test/run-pass/dynamic-drop.rs b/src/test/run-pass/dynamic-drop.rs index a2cca206409..26e5fe987ee 100644 --- a/src/test/run-pass/dynamic-drop.rs +++ b/src/test/run-pass/dynamic-drop.rs @@ -125,6 +125,14 @@ fn union1(a: &Allocator) { } } +fn array_simple(a: &Allocator) { + let _x = [a.alloc(), a.alloc(), a.alloc(), a.alloc()]; +} + +fn vec_simple(a: &Allocator) { + let _x = vec![a.alloc(), a.alloc(), a.alloc(), a.alloc()]; +} + fn run_test<F>(mut f: F) where F: FnMut(&Allocator) { @@ -171,5 +179,8 @@ fn main() { run_test(|a| assignment1(a, false)); run_test(|a| assignment1(a, true)); + run_test(|a| array_simple(a)); + run_test(|a| vec_simple(a)); + run_test_nopanic(|a| union1(a)); } |
