From 791785c2b4c01abf1a0207fb4697789ff03af218 Mon Sep 17 00:00:00 2001 From: Sviatoslav Peleshko Date: Mon, 3 Jul 2023 09:45:29 +0300 Subject: [PATCH] glsl: Fix yylloc.source propagation in YYLLOC_DEFAULT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, it's always initialized to 0, but we should take the value from the grouping passed to the macro. This way parser will have the full location info, and errors originating from it will show the correct source file number. Fixes: a0cfe8c4 ("glsl: Fix missing initialization of yylloc.source") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9229 Signed-off-by: Sviatoslav Peleshko Reviewed-by: Marek Olšák Part-of: --- src/compiler/glsl/glcpp/glcpp.h | 3 ++- src/compiler/glsl/glsl_parser_extras.h | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/compiler/glsl/glcpp/glcpp.h b/src/compiler/glsl/glcpp/glcpp.h index b797433adb1..d1d22274f29 100644 --- a/src/compiler/glsl/glcpp/glcpp.h +++ b/src/compiler/glsl/glcpp/glcpp.h @@ -91,6 +91,7 @@ do { \ (Current).first_column = YYRHSLOC(Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC(Rhs, N).last_line; \ (Current).last_column = YYRHSLOC(Rhs, N).last_column; \ + (Current).source = YYRHSLOC(Rhs, N).source; \ } \ else \ { \ @@ -98,8 +99,8 @@ do { \ YYRHSLOC(Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC(Rhs, 0).last_column; \ + (Current).source = YYRHSLOC(Rhs, 0).source; \ } \ - (Current).source = 0; \ } while (0) struct token { diff --git a/src/compiler/glsl/glsl_parser_extras.h b/src/compiler/glsl/glsl_parser_extras.h index efb405436e8..90d401707e3 100644 --- a/src/compiler/glsl/glsl_parser_extras.h +++ b/src/compiler/glsl/glsl_parser_extras.h @@ -1000,6 +1000,7 @@ do { \ (Current).last_line = YYRHSLOC(Rhs, N).last_line; \ (Current).last_column = YYRHSLOC(Rhs, N).last_column; \ (Current).path = YYRHSLOC(Rhs, N).path; \ + (Current).source = YYRHSLOC(Rhs, N).source; \ } \ else \ { \ @@ -1007,9 +1008,9 @@ do { \ YYRHSLOC(Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC(Rhs, 0).last_column; \ - (Current).path = YYRHSLOC(Rhs, 0).path; \ + (Current).path = YYRHSLOC(Rhs, 0).path; \ + (Current).source = YYRHSLOC(Rhs, 0).source; \ } \ - (Current).source = 0; \ } while (0) /**