summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-18 03:29:12 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-18 03:29:12 +0000
commite6883ef68880dc6682ab8bad5c390619e672933f (patch)
tree3dd51cda727819ae5880cd045c0e3df6ce2b3fab /parse.y
parent257fbc2c51e1b16af87268059febc418dbd736c6 (diff)
parse.y: fix overflow
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61900 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y3
1 files changed, 1 insertions, 2 deletions
diff --git a/parse.y b/parse.y
index 470c37d4d9..76f134d9d6 100644
--- a/parse.y
+++ b/parse.y
@@ -6191,7 +6191,6 @@ parser_heredoc_identifier(struct parser_params *p)
break;
}
- p->tokenbuf[0] = p->tokenbuf[0] + toklen() - 2;
tokfix();
dispatch_scan_event(tHEREDOC_BEG);
len = p->lex.pcur - p->lex.pbeg;
@@ -9155,7 +9154,7 @@ void
rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc)
{
const char *eos = RSTRING_PTR(here->term);
- int term_len = (int)eos[0];
+ long term_len = RSTRING_LEN(here->term) - 2 + (unsigned char)eos[0];
yylloc->beg_pos.lineno = (int)here->sourceline;
yylloc->beg_pos.column = (int)(here->u3.lastidx - term_len);