glsl: Make ir_dereference_variable ctor assert the variable exists.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 13 Mar 2012 20:05:16 +0000 (13:05 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 26 Mar 2012 17:21:57 +0000 (10:21 -0700)
This also seems like a bad idea.  There were too many instances for me
to thoroughly scan the code as I did with the last two patches, but a
quick scan indicated that most callers newly allocate a variable,
dereference it, or NULL-check.  In some cases, it wasn't clear that the
value would be non-NULL, but they didn't check for error_type either.

At any rate, not checking for this is a bug, and assertions will trigger
it earlier and more reliably than returning error_type.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/glsl/ir.cpp

index fb9a50e1aa57f025e8852f5209d958c4914d746f..3c9d6e174d0aa97c16e20b151b2483c601a83d58 100644 (file)
@@ -1026,9 +1026,11 @@ ir_loop::ir_loop()
 
 ir_dereference_variable::ir_dereference_variable(ir_variable *var)
 {
+   assert(var != NULL);
+
    this->ir_type = ir_type_dereference_variable;
    this->var = var;
-   this->type = (var != NULL) ? var->type : glsl_type::error_type;
+   this->type = var->type;
 }