aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-11-08 23:09:25 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-11-08 23:09:25 +0000
commitcf3329cb8dcce26e1fe2f2f49bb1d4ddeed07588 (patch)
tree49bc656b751dd14dfa6507d025917f3c6e1c9ce4 /parse.y
parentb8878481883d0450cd4c8ad4b5af7c78b7968c1d (diff)
downloadruby-cf3329cb8dcce26e1fe2f2f49bb1d4ddeed07588.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
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y7
1 files changed, 2 insertions, 5 deletions
diff --git a/parse.y b/parse.y
index fab1eece8e..d9b3e2da03 100644
--- a/parse.y
+++ b/parse.y
@@ -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);
}