glcpp: Raise error when modulus is zero
authorChad Versace <chad.versace@intel.com>
Wed, 2 Feb 2011 18:15:19 +0000 (10:15 -0800)
committerChad Versace <chad.versace@intel.com>
Wed, 2 Feb 2011 18:19:51 +0000 (10:19 -0800)
For example, this now raises an error:
   #define XXX 1 / 0

Fixes bug: https://bugs.freedesktop.org//show_bug.cgi?id=33507
Fixes Piglit test: spec/glsl-1.10/preprocessor/modulus-by-zero.vert

NOTE: This is a candidate for the 7.9 and 7.10 branches.

src/glsl/glcpp/glcpp-parse.y

index aa5a0c4f209938c6f0bd1ea7b693ed9684457a3e..1f6e67fa062239bb828487efb31135b0e55a5a38 100644 (file)
@@ -388,7 +388,12 @@ expression:
                $$ = $1 + $3;
        }
 |      expression '%' expression {
-               $$ = $1 % $3;
+               if ($3 == 0) {
+                       yyerror (& @1, parser,
+                                "zero modulus in preprocessor directive");
+               } else {
+                       $$ = $1 % $3;
+               }
        }
 |      expression '/' expression {
                if ($3 == 0) {