This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Eliminate some uses of sv_setpv() where we already know the length.
[perl5.git] / gv.c
diff --git a/gv.c b/gv.c
index d34d043..24dabf6 100644 (file)
--- 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);
        }
     }
 }