Fix nested empty heredoc causing segfault

As reported by https://hackerone.com/jpenalbae
This commit is contained in:
Bouke van der Bijl
2016-11-18 16:17:40 -05:00
parent a630c4f413
commit 73e4f069be
3 changed files with 16 additions and 2 deletions
+5 -1
View File
@@ -2285,7 +2285,11 @@ codegen(codegen_scope *s, node *tree, int val)
if (val) {
node *n = tree;
if (!n) break;
if (!n) {
genop(s, MKOP_A(OP_LOADNIL, cursp()));
push();
break;
}
codegen(s, n->car, VAL);
n = n->cdr;
while (n) {
+1 -1
View File
@@ -6541,7 +6541,7 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
case NODE_HEREDOC:
printf("NODE_HEREDOC (<<%s):\n", ((parser_heredoc_info*)tree)->term);
mrb_parser_dump(mrb, ((parser_heredoc_info*)tree)->doc, offset+1);
dump_recur(mrb, ((parser_heredoc_info*)tree)->doc, offset+1);
break;
default:
+10
View File
@@ -0,0 +1,10 @@
##
# Codegen tests
assert('nested empty heredoc') do
_, a = nil, <<B
#{<<A}
A
B
assert_equal "\n", a
end