diff options
author | Brian Fraser <fraserbn@gmail.com> | 2011-07-06 02:36:37 -0300 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-10-06 13:01:05 -0700 |
commit | c22420654592c6c91357fd0422495dbfa76ae7c7 (patch) | |
tree | 82237aaca9ad87d55ebbd4557d493823c50a4d31 /gv.c | |
parent | ca237673de2ae6d81d72101274b0f6cf3a142f44 (diff) | |
download | perl-c22420654592c6c91357fd0422495dbfa76ae7c7.tar.gz |
gv.c: gp_free UTF8 cleanup
Diffstat (limited to 'gv.c')
-rw-r--r-- | gv.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -2112,10 +2112,11 @@ Perl_gp_free(pTHX_ GV *gv) /* FIXME - another reference loop GV -> symtab -> GV ? Somehow gp->gp_hv can end up pointing at freed garbage. */ if (hv && SvTYPE(hv) == SVt_PVHV) { - const char *hvname = HvNAME_get(hv); - if (PL_stashcache && hvname) - (void)hv_delete(PL_stashcache, hvname, HvNAMELEN_get(hv), - G_DISCARD); + const HEK *hvname_hek = HvNAME_HEK(hv); + if (PL_stashcache && hvname_hek) + (void)hv_delete(PL_stashcache, HEK_KEY(hvname_hek), + (HEK_UTF8(hvname_hek) ? -HEK_LEN(hvname_hek) : HEK_LEN(hvname_hek)), + G_DISCARD); SvREFCNT_dec(hv); } SvREFCNT_dec(io); |