This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: [perl #20408] SV's SvPVX get freed even when its SvLEN is zero
[perl5.git] / pp_ctl.c
index ed392cc..1a3fd1d 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -182,7 +182,8 @@ PP(pp_substcont)
            cx->sb_rxtainted |= RX_MATCH_TAINTED(rx);
 
            (void)SvOOK_off(targ);
            cx->sb_rxtainted |= RX_MATCH_TAINTED(rx);
 
            (void)SvOOK_off(targ);
-           Safefree(SvPVX(targ));
+           if (SvLEN(targ))
+               Safefree(SvPVX(targ));
            SvPVX(targ) = SvPVX(dstr);
            SvCUR_set(targ, SvCUR(dstr));
            SvLEN_set(targ, SvLEN(dstr));
            SvPVX(targ) = SvPVX(dstr);
            SvCUR_set(targ, SvCUR(dstr));
            SvLEN_set(targ, SvLEN(dstr));