diff --git a/Test/cppIntMinOverNegativeOne.frag b/Test/cppIntMinOverNegativeOne.frag index 1cdaaeb78da3835aef82d6035b1fa97ced2abf43..b7e0a95364f59b7e1b5cd465b43ae48778b69ad0 100644 --- a/Test/cppIntMinOverNegativeOne.frag +++ b/Test/cppIntMinOverNegativeOne.frag @@ -1,3 +1,6 @@ #if (-2147483648 / -1) != 0 #error INT_MIN / -1 should yield 0, something went wrong. +#endif +#if (-2147483648 % -1) != 0 +#error INT_MIN % -1 should yield 0, something went wrong. #endif \ No newline at end of file diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index 0cb560cc8f93d1a931ebef76a815ca4e69f93339..aeb42a09a6fed888d5589da4374e6339a579a2d7 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -352,7 +352,7 @@ namespace { int op_sub(int a, int b) { return a - b; } int op_mul(int a, int b) { return a * b; } int op_div(int a, int b) { return a == INT_MIN && b == -1 ? 0 : a / b; } - int op_mod(int a, int b) { return a % b; } + int op_mod(int a, int b) { return a == INT_MIN && b == -1 ? 0 : a % b; } int op_pos(int a) { return a; } int op_neg(int a) { return -a; } int op_cmpl(int a) { return ~a; }