Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com>

On Sun, Jul 14, 2013 at 9:27 AM, Paul Berry <stereotype...@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
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to