Ignore source file, line number and column in glcpp_error() and
glcpp_warning() if those are not available.

It fixes 4 piglit tests:
  spec/glsl-1.10/compiler/version-0.frag: crash pass
  spec/glsl-1.10/compiler/version-0.vert: crash pass
  spec/glsl-es-3.00/compiler/version-0.frag: crash pass
  spec/glsl-es-3.00/compiler/version-0.vert: crash pass

V2:
 - Use brackets (Timothy)
---
 src/compiler/glsl/glcpp/pp.c | 43 +++++++++++++++++++++++++++++--------------
 1 file changed, 29 insertions(+), 14 deletions(-)

diff --git a/src/compiler/glsl/glcpp/pp.c b/src/compiler/glsl/glcpp/pp.c
index b591279..ab6a214 100644
--- a/src/compiler/glsl/glcpp/pp.c
+++ b/src/compiler/glsl/glcpp/pp.c
@@ -32,13 +32,21 @@ glcpp_error (YYLTYPE *locp, glcpp_parser_t *parser, const 
char *fmt, ...)
        va_list ap;
 
        parser->error = 1;
-       ralloc_asprintf_rewrite_tail(&parser->info_log,
-                                    &parser->info_log_length,
-                                    "%u:%u(%u): "
-                                    "preprocessor error: ",
-                                    locp->source,
-                                    locp->first_line,
-                                    locp->first_column);
+
+        if (locp) {
+           ralloc_asprintf_rewrite_tail(&parser->info_log,
+                                        &parser->info_log_length,
+                                        "%u:%u(%u): "
+                                        "preprocessor error: ",
+                                        locp->source,
+                                        locp->first_line,
+                                        locp->first_column);
+        } else {
+           ralloc_asprintf_rewrite_tail(&parser->info_log,
+                                        &parser->info_log_length,
+                                        "preprocessor error: ");
+        }
+
        va_start(ap, fmt);
        ralloc_vasprintf_rewrite_tail(&parser->info_log,
                                      &parser->info_log_length,
@@ -53,13 +61,20 @@ glcpp_warning (YYLTYPE *locp, glcpp_parser_t *parser, const 
char *fmt, ...)
 {
        va_list ap;
 
-       ralloc_asprintf_rewrite_tail(&parser->info_log,
-                                    &parser->info_log_length,
-                                    "%u:%u(%u): "
-                                    "preprocessor warning: ",
-                                    locp->source,
-                                    locp->first_line,
-                                    locp->first_column);
+        if (locp) {
+           ralloc_asprintf_rewrite_tail(&parser->info_log,
+                                        &parser->info_log_length,
+                                        "%u:%u(%u): "
+                                        "preprocessor warning: ",
+                                        locp->source,
+                                        locp->first_line,
+                                        locp->first_column);
+        } else {
+           ralloc_asprintf_rewrite_tail(&parser->info_log,
+                                        &parser->info_log_length,
+                                        "preprocesor warning: ");
+        }
+
        va_start(ap, fmt);
        ralloc_vasprintf_rewrite_tail(&parser->info_log,
                                      &parser->info_log_length,
-- 
2.7.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to