On 04/04/2014 03:28 AM, Juha-Pekka Heikkila wrote:
> Check return value from hash_table_find before using it as a pointer
> 
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikk...@gmail.com>
> ---
>  src/glsl/loop_analysis.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/glsl/loop_analysis.cpp b/src/glsl/loop_analysis.cpp
> index d6a9ac7..5e4eaa1 100644
> --- a/src/glsl/loop_analysis.cpp
> +++ b/src/glsl/loop_analysis.cpp
> @@ -589,7 +589,7 @@ get_basic_induction_increment(ir_assignment *ir, 
> hash_table *var_hash)
>        loop_variable *lv =
>           (loop_variable *) hash_table_find(var_hash, inc_var);
>  
> -      if (!lv->is_loop_constant())
> +      if (lv == NULL || !lv->is_loop_constant())

I think this case is more catastrophic than that.  This means we've
encountered a variable inside a loop, but that variable isn't in the
table of variables used inside the loop.  Just putting a NULL check here
will make it more difficult to find a real bug, should one exist.

I think I'd also want an assert(lv != NULL) inside the if block.

>           inc = NULL;
>        } else
>        inc = NULL;

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to