summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-01-21 09:04:58 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-01-21 09:04:58 +0000
commit8ef071c882218ff2d9f00f51f55e872343776104 (patch)
tree93989de48296e87724e9cf379c5f1395a14acb31 /parse.y
parent41d0ebf4660c74a92bfd9484bd3659d5367d2d76 (diff)
1.2.2 release
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@376 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y16
1 files changed, 9 insertions, 7 deletions
diff --git a/parse.y b/parse.y
index bf7ac0317c..8a15186c8a 100644
--- a/parse.y
+++ b/parse.y
@@ -2183,7 +2183,8 @@ here_document(term)
char *eos;
int len;
VALUE str, line;
- char *save_beg, *save_end, *save_lexp;
+ VALUE lastline_save;
+ int offset_save;
NODE *list = 0;
int linesave = sourceline;
@@ -2212,9 +2213,8 @@ here_document(term)
break;
}
tokfix();
- save_lexp = lex_p;
- save_beg = lex_pbeg;
- save_end = lex_pend;
+ lastline_save = lex_lastline;
+ offset_save = lex_p - lex_pbeg;
eos = strdup(tok());
len = strlen(eos);
@@ -2262,9 +2262,11 @@ here_document(term)
}
}
free(eos);
- lex_p = save_lexp;
- lex_pbeg = save_beg;
- lex_pend = save_end;
+ lex_lastline = lastline_save;
+ lex_pbeg = RSTRING(lex_lastline)->ptr;
+ lex_pend = lex_pbeg + RSTRING(lex_lastline)->len;
+ lex_p = lex_pbeg + offset_save;
+
lex_state = EXPR_END;
heredoc_end = sourceline;
sourceline = linesave;