S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs, bool for_my)
{
dVAR;
- SV *stashsv;
PERL_ARGS_ASSERT_APPLY_ATTRS;
/* fake up C<use attributes $pkg,$rv,@attrs> */
ENTER; /* need to protect against side-effects of 'use' */
- stashsv = stash ? newSVhek(HvNAME_HEK(stash)) : &PL_sv_no;
#define ATTRSMODULE "attributes"
#define ATTRSMODULE_PM "attributes.pm"
newSVpvs(ATTRSMODULE), NULL);
}
else {
+ SV * const stashsv =
+ stash ? newSVhek(HvNAME_HEK(stash)) : &PL_sv_no;
Perl_load_module(aTHX_ PERL_LOADMOD_IMPORT_OPS,
newSVpvs(ATTRSMODULE),
NULL,
use Config;
-plan tests => 27;
+plan tests => 28;
# run some code N times. If the number of SVs at the end of loop N is
# greater than (N-1)*delta at the end of loop 1, we've got a leak
leak(2, 0, sub { eval 'tr/9-0//' }, 'tr/9-0//');
leak(2, 0, sub { eval 'tr/a-z-0//' }, 'tr/a-z-0//');
}
+
+# [perl #114764] Attributes leak scalars
+leak(2, 0, sub { eval 'my $x : shared' }, 'my $x :shared used to leak');