diff options
-rw-r--r-- | pp_ctl.c | 2 | ||||
-rw-r--r-- | t/lib/warnings/9uninit | 4 | ||||
-rw-r--r-- | toke.c | 10 |
3 files changed, 4 insertions, 12 deletions
@@ -3455,8 +3455,6 @@ PP(pp_entereval) } sv = POPs; - if (!SvPV_nolen_const(sv)) - RETPUSHUNDEF; TAINT_PROPER("eval"); ENTER; diff --git a/t/lib/warnings/9uninit b/t/lib/warnings/9uninit index 9b60808d0d..f49ca66474 100644 --- a/t/lib/warnings/9uninit +++ b/t/lib/warnings/9uninit @@ -1289,11 +1289,7 @@ $v = eval; $v = eval $m1; EXPECT Use of uninitialized value $_ in eval "string" at - line 4. -Use of uninitialized value $_ in eval "string" at - line 4. -Use of uninitialized value UTF8?'':'$_ 'in eval "string" at - line 4. -Use of uninitialized value $m1 in eval "string" at - line 5. Use of uninitialized value $m1 in eval "string" at - line 5. -Use of uninitialized value UTF8?'':'$m1 'in eval "string" at - line 5. ######## use warnings 'uninitialized'; my ($m1); @@ -662,13 +662,11 @@ Perl_lex_start(pTHX_ SV *line) PL_lex_inwhat = 0; PL_sublex_info.sub_inwhat = 0; PL_linestr = line; - if (SvREADONLY(PL_linestr)) - PL_linestr = sv_2mortal(newSVsv(PL_linestr)); s = SvPV_const(PL_linestr, len); - if (!len || s[len-1] != ';') { - if (!(SvFLAGS(PL_linestr) & SVs_TEMP)) - PL_linestr = sv_2mortal(newSVsv(PL_linestr)); - sv_catpvs(PL_linestr, "\n;"); + if (SvREADONLY(PL_linestr) || !len || s[len-1] != ';') { + PL_linestr = sv_2mortal(len ? newSVsv(PL_linestr) : newSVpvn(s, 0)); + if (!len || s[len-1] != ';') + sv_catpvs(PL_linestr, "\n;"); } SvTEMP_off(PL_linestr); PL_oldoldbufptr = PL_oldbufptr = PL_bufptr = PL_linestart = SvPVX(PL_linestr); |