summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dragan <bulk88@hotmail.com>2014-12-02 19:31:35 -0500
committerTony Cook <tony@develop-help.com>2014-12-03 14:08:06 +1100
commit1037353b7e5ab2b2522d601c33d3c548ab4cd100 (patch)
tree416d6e26c019e9c6fc06931b501124a12c4f7f4b
parent190f5bb61e6f462ca221d9bbf42d21bf77349f42 (diff)
downloadperl-1037353b7e5ab2b2522d601c33d3c548ab4cd100.tar.gz
pp_eof: a new SV can't have setmagic
-dont compute GvSV multiple times
-rw-r--r--pp_sys.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/pp_sys.c b/pp_sys.c
index 8f6c75326c..09eead6ade 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -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;