[Mesa-dev] [PATCH] glsl: Fix lower_named_interface_blocks to account for dereferences of consts.

Jordan Justen jljusten at gmail.com
Sun Jul 14 12:48:41 PDT 2013


Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

On Sun, Jul 14, 2013 at 9:27 AM, Paul Berry <stereotype441 at gmail.com> wrote:
> In certain rare cases (such as those involving dereference of a
> literal constant array of structs),
> flatten_named_interface_blocks_declarations's rvalue visitor may be
> invoked on an ir_dereference_record whose variable_referenced() method
> returns NULL.
>
> Check for this case to avoid a segfault.
>
> Prevents crashes in piglit tests
> {vs,fs}-deref-literal-array-of-structs.
> ---
>  src/glsl/lower_named_interface_blocks.cpp | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/src/glsl/lower_named_interface_blocks.cpp b/src/glsl/lower_named_interface_blocks.cpp
> index 922cc02..d0d491d 100644
> --- a/src/glsl/lower_named_interface_blocks.cpp
> +++ b/src/glsl/lower_named_interface_blocks.cpp
> @@ -194,6 +194,8 @@ flatten_named_interface_blocks_declarations::handle_rvalue(ir_rvalue **rvalue)
>        return;
>
>     ir_variable *var = ir->variable_referenced();
> +   if (var == NULL)
> +      return;
>
>     if (!var->is_interface_instance())
>        return;
> --
> 1.8.3.2
>


More information about the mesa-dev mailing list