From 9e86d204e54eb0824cbb681027c729fbc8ab82a7 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sun, 12 Sep 2021 07:53:46 +0900 Subject: parse.y: avoid adding zero length strings. --- mrbgems/mruby-compiler/core/parse.y | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'mrbgems/mruby-compiler/core/parse.y') diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 6e6dff533..cb1ad9427 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -3305,7 +3305,11 @@ string_fragment : tCHAR } | tSTRING_BEG string_rep tSTRING { - $$ = new_dstr(p, push($2, $3)); + node *n = $2; + if (nint($3->cdr->cdr) > 0) { + n = push(n, $3); + } + $$ = new_dstr(p, n); } ; @@ -3347,7 +3351,11 @@ xstring : tXSTRING_BEG tXSTRING } | tXSTRING_BEG string_rep tXSTRING { - $$ = new_dxstr(p, push($2, $3)); + node *n = $2; + if (nint($3->cdr->cdr) > 0) { + n = push(n, $3); + } + $$ = new_dxstr(p, n); } ; @@ -3410,7 +3418,11 @@ words : tWORDS_BEG tSTRING } | tWORDS_BEG string_rep tSTRING { - $$ = new_words(p, push($2, $3)); + node *n = $2; + if (nint($3->cdr->cdr) > 0) { + n = push(n, $3); + } + $$ = new_words(p, n); } ; @@ -3422,8 +3434,12 @@ symbol : basic_symbol } | tSYMBEG tSTRING_BEG string_rep tSTRING { + node *n = $3; p->lstate = EXPR_ENDARG; - $$ = new_dsym(p, new_dstr(p, push($3, $4))); + if (nint($4->cdr->cdr) > 0) { + n = push(n, $4); + } + $$ = new_dsym(p, new_dstr(p, n)); } ; -- cgit v1.2.3