diff options
author | Daniel Dragan <bulk88@hotmail.com> | 2014-12-02 19:31:35 -0500 |
---|---|---|
committer | Tony Cook <tony@develop-help.com> | 2014-12-03 14:08:06 +1100 |
commit | 1037353b7e5ab2b2522d601c33d3c548ab4cd100 (patch) | |
tree | 416d6e26c019e9c6fc06931b501124a12c4f7f4b | |
parent | 190f5bb61e6f462ca221d9bbf42d21bf77349f42 (diff) | |
download | perl-1037353b7e5ab2b2522d601c33d3c548ab4cd100.tar.gz |
pp_eof: a new SV can't have setmagic
-dont compute GvSV multiple times
-rw-r--r-- | pp_sys.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -2115,14 +2115,18 @@ PP(pp_eof) if (!MAXARG && (PL_op->op_flags & OPf_SPECIAL)) { /* eof() */ if (io && !IoIFP(io)) { if ((IoFLAGS(io) & IOf_START) && av_tindex(GvAVn(gv)) < 0) { + SV ** svp; IoLINES(io) = 0; IoFLAGS(io) &= ~IOf_START; do_open6(gv, "-", 1, NULL, NULL, 0); - if (GvSV(gv)) - sv_setpvs(GvSV(gv), "-"); + svp = &GvSV(gv); + if (*svp) { + SV * sv = *svp; + sv_setpvs(sv, "-"); + SvSETMAGIC(sv); + } else - GvSV(gv) = newSVpvs("-"); - SvSETMAGIC(GvSV(gv)); + *svp = newSVpvs("-"); } else if (!nextargv(gv, FALSE)) RETPUSHYES; |