From 5be89bc80f7f235805ec706f1ff13e6952f0d34e Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 4 May 2021 07:35:44 -0700 Subject: parser: fix regression in #; syntax. A crash has showed up when processing commented-out objects. This is due to the most recent gc fix to the parser. * parser.y (set_syntax_tree): Avoid the set macro when tree has the special value nao (not an object). * y.tab.c.shipped: Regenerated. * y.tab.h.shipped: Likewise. --- parser.y | 5 ++++- y.tab.c.shipped | 5 ++++- y.tab.h.shipped | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/parser.y b/parser.y index 3c51b69d..875a808e 100644 --- a/parser.y +++ b/parser.y @@ -1400,7 +1400,10 @@ void yydebug_onoff(int val) static void set_syntax_tree(parser_t *parser, val tree) { - set(mkloc(parser->syntax_tree, parser->parser), tree); + if (tree == nao) + parser->syntax_tree = tree; + else + set(mkloc(parser->syntax_tree, parser->parser), tree); } static val sym_helper(parser_t *parser, wchar_t *lexeme, val meta_allowed) diff --git a/y.tab.c.shipped b/y.tab.c.shipped index 2df3bdb9..526f2eef 100644 --- a/y.tab.c.shipped +++ b/y.tab.c.shipped @@ -6743,7 +6743,10 @@ void yydebug_onoff(int val) static void set_syntax_tree(parser_t *parser, val tree) { - set(mkloc(parser->syntax_tree, parser->parser), tree); + if (tree == nao) + parser->syntax_tree = tree; + else + set(mkloc(parser->syntax_tree, parser->parser), tree); } static val sym_helper(parser_t *parser, wchar_t *lexeme, val meta_allowed) diff --git a/y.tab.h.shipped b/y.tab.h.shipped index 19ec4906..82de207d 100644 --- a/y.tab.h.shipped +++ b/y.tab.h.shipped @@ -154,7 +154,7 @@ typedef union YYSTYPE { /* Line 2068 of yacc.c */ -#line 106 "parser.y" +#line 107 "parser.y" wchar_t *lexeme; union obj *val; -- cgit v1.2.3