mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 11:00:11 +01:00
glsl: In update_max_array_access, fix interface instance check.
In commit f878d20 (glsl: Update ir_variable::max_ifc_array_access
properly), I accidentally used the wrong kind of check to determine
whether the variable being accessed was an interface instance (I used
var->get_interface_type() != NULL when I should have used
var->is_interface_instance()). As a result, if an unnamed interface
block contained a struct which contained an array,
update_max_array_access() would mistakenly interpret the struct as a
named interface block and try to dereference a null
var->max_ifc_array_access.
This patch corrects the check, fixing the null dereference.
Fixes piglit test interface-block-struct-nesting.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70368
Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
79e835a712
commit
e2d1eaa32a
1 changed files with 3 additions and 3 deletions
|
|
@ -69,9 +69,9 @@ update_max_array_access(ir_rvalue *ir, unsigned idx, YYLTYPE *loc,
|
|||
}
|
||||
|
||||
if (deref_var != NULL) {
|
||||
const glsl_type *interface_type =
|
||||
deref_var->var->get_interface_type();
|
||||
if (interface_type != NULL) {
|
||||
if (deref_var->var->is_interface_instance()) {
|
||||
const glsl_type *interface_type =
|
||||
deref_var->var->get_interface_type();
|
||||
unsigned field_index =
|
||||
deref_record->record->type->field_index(deref_record->field);
|
||||
assert(field_index < interface_type->length);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue