Commit | Line | Data |
b0745470 |
1 | #!/usr/bin/perl -w |
2 | use strict; |
3 | use warnings; |
4 | use Test::More tests => 2; |
5 | |
6 | # Under Perl 5.10.x, a string eval can cause a copy to be taken of |
7 | # %^H, which delays stringification of our scope guard objects, |
8 | # which in turn causes autodie to leak. These tests check to see |
9 | # if we've successfully worked around this issue. |
10 | |
11 | eval { |
12 | |
13 | { |
14 | use autodie; |
15 | eval "1"; |
16 | } |
17 | |
18 | open(my $fh, '<', 'this_file_had_better_not_exist'); |
19 | }; |
20 | |
21 | TODO: { |
22 | local $TODO; |
23 | |
24 | if ( $] >= 5.010 ) { |
25 | $TODO = "Autodie can leak near string evals in 5.10.x"; |
26 | } |
27 | |
28 | is("$@","","Autodie should not leak out of scope"); |
29 | } |
30 | |
31 | # However, we can plug the leak with 'no autodie'. |
32 | |
33 | no autodie; |
34 | |
35 | eval { |
36 | open(my $fh, '<', 'this_file_had_better_not_exist'); |
37 | }; |
38 | |
39 | is("$@","",'no autodie should be able to workaround this bug'); |