[Mesa-dev] [PATCH] glsl: fix segfault when indirect indexing a buffer variable which is an array

Timothy Arceri t_arceri at yahoo.com.au
Mon Oct 19 02:10:08 PDT 2015


On Mon, 2015-10-19 at 11:00 +0200, Samuel Iglesias Gonsalvez wrote:
> Fixes a regression added by bb5aeb854915ba67abc56257f830d002c956439e.
> 
> Signed-off-by: Samuel Iglesias Gonsalvez <siglesias at igalia.com>

Thanks. Reviewed-by: Timothy Arceri <t_arceri at yahoo.com.au>

I'm surprised this didn't show up in my piglit regression testing.

> ---
> 
> Piglit test that checks the regression:
>   http://patchwork.freedesktop.org/patch/62183/ 
> 
>  src/glsl/lower_ubo_reference.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/glsl/lower_ubo_reference.cpp
> b/src/glsl/lower_ubo_reference.cpp
> index 1fbb09d..7dcbe15 100644
> --- a/src/glsl/lower_ubo_reference.cpp
> +++ b/src/glsl/lower_ubo_reference.cpp
> @@ -284,7 +284,7 @@ interface_field_name(void *mem_ctx, char
> *base_name, ir_rvalue *d,
>              if (array_index->type != glsl_type::uint_type)
>                 array_index = i2u(array_index);
>  
> -            if (a->array->type->fields.array->is_array()) {
> +            if (a->array->type->is_array() && a->array->type
> ->fields.array->is_array()) {
>                 ir_constant *base_size = new(mem_ctx)
>                    ir_constant(a->array->type->fields.array
> ->arrays_of_arrays_size());
>                 array_index = mul(array_index, base_size);


More information about the mesa-dev mailing list