summaryrefslogtreecommitdiff
path: root/gv.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2012-04-08 20:25:52 -0700
committerFather Chrysostomos <sprout@cpan.org>2012-04-19 20:09:11 -0700
commit6379d4a9afb32e86e55704579c9ac81237309672 (patch)
tree885d2dca15b39a4dc91bf9b5bbd3ac8609eea01d /gv.c
parent862504fb08ed24a37a327d325e83ceac76cf05cf (diff)
downloadperl-6379d4a9afb32e86e55704579c9ac81237309672.tar.gz
[perl #112316] Make strict vars respect assignment from null pkg
Under threads, strict vars was not respecting glob assignment from a package with a null in its name if the name of the package assigned to was equal to the prefix of the current package up to the null.
Diffstat (limited to 'gv.c')
-rw-r--r--gv.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gv.c b/gv.c
index a61c34f219..f51fe0584a 100644
--- a/gv.c
+++ b/gv.c
@@ -911,8 +911,10 @@ S_gv_get_super_pkg(pTHX_ const char* name, I32 namelen, U32 flags)
sv_magic(MUTABLE_SV(superisa), MUTABLE_SV(gv), PERL_MAGIC_isa, NULL, 0);
#ifdef USE_ITHREADS
av_push(superisa, newSVpvn_flags(CopSTASHPV(PL_curcop),
- strlen(CopSTASHPV(PL_curcop)),
- CopSTASH_flags(PL_curcop)
+ CopSTASH_len(PL_curcop) < 0
+ ? -CopSTASH_len(PL_curcop)
+ : CopSTASH_len(PL_curcop),
+ SVf_UTF8*(CopSTASH_len(PL_curcop) < 0)
));
#else
av_push(superisa, newSVhek(CopSTASH(PL_curcop)