mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 11:30:06 +00:00
Preprocessor: Prevent (and give an error on) expression division by 0.
This commit is contained in:
parent
e9022e1ffe
commit
d2762564dc
@ -42,8 +42,12 @@ ERROR: 0:3006: '#undef' : predefined names can't be (un)defined: __LINE__
|
||||
ERROR: 0:3007: '#undef' : predefined names can't be (un)defined: __FILE__
|
||||
ERROR: 0:3008: '#undef' : predefined names can't be (un)defined: __VERSION__
|
||||
ERROR: 0:3009: '#undef' : names beginning with "GL_" can't be (un)defined: GL_SOME_EXTENSION
|
||||
ERROR: 0:4000: 'preprocessor evaluation' : division by 0
|
||||
ERROR: 0:0: 'preprocessor evaluation' : division by 0
|
||||
ERROR: 0:3: 'preprocessor evaluation' : bad expression
|
||||
ERROR: 0:3: 'preprocessor evaluation' : division by 0
|
||||
ERROR: 0:10001: '' : missing #endif
|
||||
ERROR: 44 compilation errors. No code generated.
|
||||
ERROR: 48 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 300
|
||||
|
@ -171,6 +171,13 @@ float c = foobar(1.1, 2.2
|
||||
#undef __VERSION__
|
||||
#undef GL_SOME_EXTENSION
|
||||
|
||||
#line 4000
|
||||
#line 200 % 0 // ERROR, div by 0
|
||||
#if __LINE__ / 0 // ERROR, div by 0
|
||||
#endif
|
||||
|
||||
#if 7% // ERROR incomplete expression
|
||||
|
||||
#line 10000
|
||||
#if 0
|
||||
// ERROR, EOF
|
@ -505,6 +505,13 @@ int TPpContext::eval(int token, int precedence, bool shortCircuit, int& res, boo
|
||||
|
||||
token = scanToken(ppToken);
|
||||
token = eval(token, binop[op].precedence, shortCircuit, res, err, ppToken);
|
||||
|
||||
if (binop[op].op == op_div || binop[op].op == op_mod) {
|
||||
if (res == 0) {
|
||||
parseContext.ppError(loc, "division by 0", "preprocessor evaluation", "");
|
||||
res = 1;
|
||||
}
|
||||
}
|
||||
res = binop[op].op(leftSide, res);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user