From: Father Chrysostomos Date: Sat, 22 Jun 2013 19:09:07 +0000 (-0700) Subject: toke.c: Don’t depend on sv_force_normal’s good graces X-Git-Tag: upstream/5.20.0~2981^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9657ccb4f31f4d026ef8ff65d8cfb5c24d0949ef;p=platform%2Fupstream%2Fperl.git toke.c: Don’t depend on sv_force_normal’s good graces when parsing ‘keyword =>’ with comments or line breaks before the =>. sv_force_normal will allow modification of read-only values at compile time. While this might be convenient, it has resulted in many bugs elsewhere, so I am trying to change that. This is a necessary pre- requisite. --- diff --git a/toke.c b/toke.c index 0a16715..e31275d 100644 --- a/toke.c +++ b/toke.c @@ -7182,9 +7182,13 @@ Perl_yylex(pTHX) if (*s == '=' && s[1] == '>' && !pkgname) { op_free(rv2cv_op); CLINE; + /* This is our own scalar, created a few lines above, + so this is safe. */ + SvREADONLY_off(cSVOPx(pl_yylval.opval)->op_sv); sv_setpv(((SVOP*)pl_yylval.opval)->op_sv, PL_tokenbuf); if (UTF && !IN_BYTES && is_utf8_string((U8*)PL_tokenbuf, len)) SvUTF8_on(((SVOP*)pl_yylval.opval)->op_sv); + SvREADONLY_on(cSVOPx(pl_yylval.opval)->op_sv); TERM(WORD); }