X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_hot.c;h=b0d53bcc2017b6ad5abd753696bdbf26fb6f2e5b;hb=b76347f2eb34c85a0a38543b2f57ca474fedab4d;hp=d6a7f04da27c2d28b8cd18e90630f68b79de0e1b;hpb=689440ec6112b0ad8e13a518cfe8f7c6b95df346;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_hot.c b/pp_hot.c index d6a7f04..b0d53bc 100644 --- a/pp_hot.c +++ b/pp_hot.c @@ -173,10 +173,8 @@ PP(pp_concat) olds = s = (U8*)savepvn((char*)s, len); } if (!SvOK(left) && SvTYPE(left) <= SVt_PVMG) { - if (SvREADONLY(left)) { - left = sv_2mortal(newSVpvn("", 0)); - left_utf = FALSE; - } + if (SvREADONLY(left)) + left = sv_2mortal(newSVsv(left)); else sv_setpv(left, ""); /* Suppress warning. */ } @@ -1452,6 +1450,13 @@ Perl_do_readline(pTHX) offset = 0; } + /* This should not be marked tainted if the fp is marked clean */ +#define MAYBE_TAINT_LINE(io, sv) \ + if (!(IoFLAGS(io) & IOf_UNTAINT)) { \ + TAINT; \ + SvTAINTED_on(sv); \ + } + /* delay EOF state for a snarfed empty file */ #define SNARF_EOF(gimme,rs,io,sv) \ (gimme != G_SCALAR || SvCUR(sv) \ @@ -1480,13 +1485,10 @@ Perl_do_readline(pTHX) (void)SvOK_off(TARG); PUSHTARG; } + MAYBE_TAINT_LINE(io, sv); RETURN; } - /* This should not be marked tainted if the fp is marked clean */ - if (!(IoFLAGS(io) & IOf_UNTAINT)) { - TAINT; - SvTAINTED_on(sv); - } + MAYBE_TAINT_LINE(io, sv); IoLINES(io)++; IoFLAGS(io) |= IOf_NOLINE; SvSETMAGIC(sv);