X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/9ff8e8065ea8557fda504cf7c2337bef185cd00f..49a54bbe5e246f5f51e51453d9cc5a19e72a4433:/gv.c diff --git a/gv.c b/gv.c index d34d043..24dabf6 100644 --- a/gv.c +++ b/gv.c @@ -214,6 +214,7 @@ Perl_gv_init(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, int multi) const U32 old_type = SvTYPE(gv); const bool doproto = old_type > SVt_NULL; const char * const proto = (doproto && SvPOK(gv)) ? SvPVX_const(gv) : NULL; + const STRLEN protolen = proto ? SvCUR(gv) : 0; SV *const has_constant = doproto && SvROK(gv) ? SvRV(gv) : NULL; const U32 exported_constant = has_constant ? SvPCS_IMPORTED(gv) : 0; @@ -280,8 +281,8 @@ Perl_gv_init(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, int multi) CvFILE_set_from_cop(GvCV(gv), PL_curcop); CvSTASH(GvCV(gv)) = PL_curstash; if (proto) { - sv_setpv((SV*)GvCV(gv), proto); - Safefree(proto); + sv_usepvn_flags((SV*)GvCV(gv), proto, protolen, + SV_HAS_TRAILING_NUL); } } }