diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-11-08 23:09:25 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-11-08 23:09:25 +0000 |
commit | 9a4e85ed3c905739a6cee1cfed5084a251273941 (patch) | |
tree | 49bc656b751dd14dfa6507d025917f3c6e1c9ce4 | |
parent | 9b981d113313f08ff6d8b9d4ecef15faeedc2901 (diff) | |
download | ruby-9a4e85ed3c905739a6cee1cfed5084a251273941.tar.gz |
parse.y: fix r60644
* parse.y (rb_strterm_heredoc_t): should not define sourceline as
union, to fix wrong read on big-endian platforms.
as rb_imemo_new stores all members as VALUEs, should read it as
VALUE too.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60720 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | parse.y | 7 |
1 files changed, 2 insertions, 5 deletions
@@ -757,10 +757,7 @@ typedef struct rb_strterm_literal_struct { } rb_strterm_literal_t; typedef struct rb_strterm_heredoc_struct { - union { - VALUE dummy; - int sourceline; - } u1; + SIGNED_VALUE sourceline; VALUE term; /* `"END"` of `<<"END"` */ VALUE lastline; /* the string of line that contains `<<"END"` */ union { @@ -6793,7 +6790,7 @@ parser_heredoc_restore(struct parser_params *parser, rb_strterm_heredoc_t *here) lex_pend = lex_pbeg + RSTRING_LEN(line); lex_p = lex_pbeg + here->u3.lastidx; heredoc_end = ruby_sourceline; - ruby_sourceline = here->u1.sourceline; + ruby_sourceline = (int)here->sourceline; token_flush(parser); } |