summaryrefslogtreecommitdiffstats
path: root/src/mesa/swrast
diff options
context:
space:
mode:
authorRenaud Gaubert <[email protected]>2015-07-11 19:38:10 +0200
committerSamuel Iglesias Gonsalvez <[email protected]>2015-07-16 08:06:41 +0200
commit7b9ebf879b6f35038996805a641667f00d93c4b7 (patch)
treee3cc962eafe4d098048ff8cd26747696ad2875b3 /src/mesa/swrast
parent779cabfc7d022de8b7b9bc7fdac0caffa8646c51 (diff)
glsl: avoid compiler's segfault when processing operators with void arguments
This is done by returning an rvalue of type void in the ast_function_expression::hir function instead of a void expression. This produces (in the case of the ternary) an hir with a call to the void returning function and an assignment of a void variable which will be optimized out (the assignment) during the optimization pass. This fix results in having a valid subexpression in the many different cases where the subexpressions are functions whose return values are void. Thus preventing to dereference NULL in the following cases: * binary operator * unary operators * ternary operator * comparison operators (except equal and nequal operator) Equal and nequal had to be handled as a special case because instead of segfaulting on a forbidden syntax it was now accepting expressions with a void return value on either (or both) side of the expression. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85252 Signed-off-by: Renaud Gaubert <[email protected]> Reviewed-by: Gabriel Laskar <[email protected]> Reviewed-by: Samuel Iglesias Gonsalvez <[email protected]>
Diffstat (limited to 'src/mesa/swrast')
0 files changed, 0 insertions, 0 deletions