From 9bd308f89d9aaf75a05f9545e220b44420a697b7 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 30 May 2025 18:21:48 -0700 Subject: parser: two fixes in buf literals. * parser.y (buflit_items): Here we have length_buf($$) referring to the semantic result value of the rule. It should be referring to $1. It works because the Bison-generated code runs the $$ = $1 logic before all rules. (buflit_item): Let's use num_fast rather than num to produce the byte value since. * y.tab.c.shipped: Regenerated. --- parser.y | 4 ++-- y.tab.c.shipped | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/parser.y b/parser.y index 0d2a4da0..0c544e0f 100644 --- a/parser.y +++ b/parser.y @@ -1472,13 +1472,13 @@ buflit : HASH_B_QUOTE '\'' { $$ = make_buf_fast(0, 0, 0); yyerrok; } ; -buflit_items : buflit_items buflit_item { buf_put_u8($1, length_buf($$), $2); +buflit_items : buflit_items buflit_item { buf_put_u8($1, length_buf($1), $2); $$ = $1; } | buflit_item { $$ = make_buf_fast(0, 0, 512); buf_put_u8($$, zero, $1); } ; -buflit_item : LITCHAR LITCHAR { $$ = num($1 << 4 | $2); } +buflit_item : LITCHAR LITCHAR { $$ = num_fast($1 << 4 | $2); } | LITCHAR error { $$ = zero; yyerr("unpaired digit in buffer literal"); yyerrok; } diff --git a/y.tab.c.shipped b/y.tab.c.shipped index ecfd5b97..c0ef56db 100644 --- a/y.tab.c.shipped +++ b/y.tab.c.shipped @@ -6833,7 +6833,7 @@ yyreduce: /* Line 1806 of yacc.c */ #line 1475 "parser.y" - { buf_put_u8((yyvsp[(1) - (2)].val), length_buf((yyval.val)), (yyvsp[(2) - (2)].val)); + { buf_put_u8((yyvsp[(1) - (2)].val), length_buf((yyvsp[(1) - (2)].val)), (yyvsp[(2) - (2)].val)); (yyval.val) = (yyvsp[(1) - (2)].val); } break; @@ -6849,7 +6849,7 @@ yyreduce: /* Line 1806 of yacc.c */ #line 1481 "parser.y" - { (yyval.val) = num((yyvsp[(1) - (2)].chr) << 4 | (yyvsp[(2) - (2)].chr)); } + { (yyval.val) = num_fast((yyvsp[(1) - (2)].chr) << 4 | (yyvsp[(2) - (2)].chr)); } break; case 455: -- cgit v1.2.3