p4raw-id: //depot/perl@31833
0, /* not fake */
PL_parser->in_my == KEY_state
);
+ /* anon sub prototypes contains state vars should always be cloned,
+ * otherwise the state var would be shared between anon subs */
+
+ if (PL_parser->in_my == KEY_state && CvANON(PL_compcv))
+ CvCLONE_on(PL_compcv);
+
return off;
}
use strict;
use feature ":5.10";
-plan tests => 117;
+plan tests => 119;
ok( ! defined state $uninit, q(state vars are undef by default) );
is $x, "two", "masked"
}
+# normally closureless anon subs share a CV and pad. If the anon sub has a
+# state var, this would mean that it is shared. Check that this doesn't
+# happen
+
+{
+ my @f;
+ push @f, sub { state $x; ++$x } for 1..2;
+ $f[0]->() for 1..10;
+ is $f[0]->(), 11;
+ is $f[1]->(), 1;
+}
+
foreach my $forbidden (<DATA>) {
chomp $forbidden;
no strict 'vars';