diff options
author | Eric Anholt <[email protected]> | 2010-07-07 09:07:09 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2010-07-07 09:07:52 -0700 |
commit | 570dc0d4004bf09d257b3e4c8664d3c26a8af510 (patch) | |
tree | b3a3aec8713694b0e8643665876923da140067cb /src/glsl | |
parent | d4d630b72c7b7f38074addda0f1b819608247d93 (diff) |
glsl2: Avoid null deref in scalar constant unop expressions.
Diffstat (limited to 'src/glsl')
-rw-r--r-- | src/glsl/ir_constant_expression.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/glsl/ir_constant_expression.cpp b/src/glsl/ir_constant_expression.cpp index 541398a91c7..98cbb6cec6c 100644 --- a/src/glsl/ir_constant_expression.cpp +++ b/src/glsl/ir_constant_expression.cpp @@ -151,7 +151,12 @@ ir_constant_visitor::visit(ir_expression *ir) */ unsigned c0_inc = op0_scalar ? 1 : 0; unsigned c1_inc = op1_scalar ? 1 : 0; - unsigned components = op[op1_scalar ? 0 : 1]->type->components(); + unsigned components; + if (op1_scalar || !op[1]) { + components = op[0]->type->components(); + } else { + components = op[1]->type->components(); + } switch (ir->operation) { case ir_unop_logic_not: |