glsl: Make ir_dereference_record constructor assert the variable exists.
Providing a NULL pointer to the ir_dereference_record() constructor seems like a bad idea. Currently, if provided NULL, it returns a partially constructed value of error type. However, none of the callers are prepared to handle that scenario. Code inspection shows that all callers do one of the following: - Already NULL-check the argument prior to creating the dereference - Already deference the argument (and thus would crash if it were NULL) - Newly allocate the argument. Thus, it should be safe to simply assert the value passed is not NULL. This should also catch issues right away, rather than dying later. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
@@ -1074,11 +1074,12 @@ ir_dereference_array::set_array(ir_rvalue *value)
|
||||
ir_dereference_record::ir_dereference_record(ir_rvalue *value,
|
||||
const char *field)
|
||||
{
|
||||
assert(value != NULL);
|
||||
|
||||
this->ir_type = ir_type_dereference_record;
|
||||
this->record = value;
|
||||
this->field = ralloc_strdup(this, field);
|
||||
this->type = (this->record != NULL)
|
||||
? this->record->type->field_type(field) : glsl_type::error_type;
|
||||
this->type = this->record->type->field_type(field);
|
||||
}
|
||||
|
||||
|
||||
@@ -1090,8 +1091,7 @@ ir_dereference_record::ir_dereference_record(ir_variable *var,
|
||||
this->ir_type = ir_type_dereference_record;
|
||||
this->record = new(ctx) ir_dereference_variable(var);
|
||||
this->field = ralloc_strdup(this, field);
|
||||
this->type = (this->record != NULL)
|
||||
? this->record->type->field_type(field) : glsl_type::error_type;
|
||||
this->type = this->record->type->field_type(field);
|
||||
}
|
||||
|
||||
bool
|
||||
|
Reference in New Issue
Block a user