diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-18 03:29:12 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-18 03:29:12 +0000 |
commit | e6883ef68880dc6682ab8bad5c390619e672933f (patch) | |
tree | 3dd51cda727819ae5880cd045c0e3df6ce2b3fab /parse.y | |
parent | 257fbc2c51e1b16af87268059febc418dbd736c6 (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.y | 3 |
1 files changed, 1 insertions, 2 deletions
@@ -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); |