1#!/usr/bin/perl -w
2use strict;
3use warnings;
4use 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
11eval {
12
13    {
14        use autodie;
15        eval "1";
16    }
17
18    open(my $fh, '<', 'this_file_had_better_not_exist');
19};
20
21TODO: {
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
33no autodie;
34
35eval {
36    open(my $fh, '<', 'this_file_had_better_not_exist');
37};
38
39is("$@","",'no autodie should be able to workaround this bug');
40