X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp_ctl.c;h=c949e789a15e876e13ab2e10ac729820f535951d;hb=154d43cbcf57271c884e15f24587b4e8d54edbdb;hp=3cc74e5281560c66cfe0a35b33ff6633c1bf8a75;hpb=67e989fb549091286d76fd8d29f1ec03b9da175d;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp_ctl.c b/pp_ctl.c index 3cc74e5..c949e78 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -2728,7 +2728,9 @@ S_doeval(pTHX_ int gimme, OP** startop) AV* comppadlist; I32 i; - PL_in_eval = EVAL_INEVAL; + PL_in_eval = ((saveop && saveop->op_type == OP_REQUIRE) + ? (EVAL_INREQUIRE | (PL_in_eval & EVAL_INEVAL)) + : EVAL_INEVAL); PUSHMARK(SP); @@ -2891,6 +2893,7 @@ S_doeval(pTHX_ int gimme, OP** startop) CvDEPTH(PL_compcv) = 1; SP = PL_stack_base + POPMARK; /* pop original mark */ PL_op = saveop; /* The caller may need it. */ + PL_lex_state = LEX_NOTPARSING; /* $^S needs this. */ #ifdef USE_THREADS MUTEX_LOCK(&PL_eval_mutex); PL_eval_owner = 0; @@ -2959,13 +2962,13 @@ PP(pp_require) U8 *s = (U8*)SvPVX(sv); U8 *end = (U8*)SvPVX(sv) + SvCUR(sv); if (s < end) { - rev = utf8_to_uv(s, &len, 0); + rev = utf8_to_uv_chk(s, &len, 0); s += len; if (s < end) { - ver = utf8_to_uv(s, &len, 0); + ver = utf8_to_uv_chk(s, &len, 0); s += len; if (s < end) - sver = utf8_to_uv(s, &len, 0); + sver = utf8_to_uv_chk(s, &len, 0); } } if (PERL_REVISION < rev