This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Better handling of magic methods freeing the SV
[perl5.git] / t / op / taint.t
index 78b3d55..fc2fcd7 100644 (file)
@@ -17,7 +17,7 @@ use Config;
 use File::Spec::Functions;
 
 BEGIN { require './test.pl'; }
-plan tests => 338;
+plan tests => 339;
 
 $| = 1;
 
@@ -1445,6 +1445,32 @@ end
     ok(! tainted($b), "regex optimization of single char /[]/i doesn't taint");
 }
 
+{
+    # RT 81230: tainted value during FETCH created extra ref to tied obj
+
+    package P81230;
+    use warnings;
+
+    my %h;
+
+    sub TIEHASH {
+       my $x = $^X; # tainted
+       bless  \$x;
+    }
+    sub FETCH { my $x = $_[0]; $$x . "" }
+
+    tie %h, 'P81230';
+
+    my $w = "";
+    local $SIG{__WARN__} = sub { $w .= "@_" };
+
+    untie %h if $h{"k"};
+
+    ::is($w, "", "RT 81230");
+}
+
+
+
 # This may bomb out with the alarm signal so keep it last
 SKIP: {
     skip "No alarm()"  unless $Config{d_alarm};