This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
329bcfa40ebc00e3029f0f97998668b3ab8a2155
[perl5.git] / ext / autodie / t / string-eval-leak.t
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');