This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix bug with (??{$overload}) regexp caching
[perl5.git] / t / re / pat_re_eval.t
index 14d681a..bcc3ac9 100644 (file)
@@ -23,7 +23,7 @@ BEGIN {
 }
 
 
-plan tests => 520;  # Update this when adding/deleting tests.
+plan tests => 522;  # Update this when adding/deleting tests.
 
 run_tests() unless caller;
 
@@ -1181,6 +1181,18 @@ sub run_tests {
        ok("a=" =~ qr//, 'qr completely empty pattern');
     }
 
+    {
+       { package o; use overload '""'=>sub { "abc" } }
+       my $x = bless [],"o";
+       my $y = \$x;
+       (my $y_addr = "$y") =~ y/()//d; # REF(0x7fcb9c02) -> REF0x7fcb9c02
+       # $y_addr =~ $y should be true, as should $y_addr =~ /(??{$y})/
+       "abc$y_addr" =~ /(??{$x})(??{$y})/;
+       is "$&", "abc$y_addr",
+          '(??{$x}) does not leak cached qr to (??{\$x}) (match)';
+       is scalar "abcabc" =~ /(??{$x})(??{$y})/, "",
+          '(??{$x}) does not leak cached qr to (??{\$x}) (no match)';
+    }
 
 } # End of sub run_tests