Mesa (gallivm-call): gallivm: Ensure all masks are initialized.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Sat May 15 10:02:05 UTC 2010


Module: Mesa
Branch: gallivm-call
Commit: e31164091ccc9cc8cdeec5b49430e672880319c1
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e31164091ccc9cc8cdeec5b49430e672880319c1

Author: José Fonseca <jfonseca at vmware.com>
Date:   Sat May 15 09:43:16 2010 +0100

gallivm: Ensure all masks are initialized.

Or calls from outermost scope cause NULL ptr derreference.

---

 src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
index 6e1e41f..c658c40 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
@@ -332,6 +332,8 @@ static LLVMValueRef lp_get_function(struct lp_build_tgsi_soa_context *bld,
 
 static void lp_exec_mask_init(struct lp_exec_mask *mask, struct lp_build_context *bld)
 {
+   LLVMValueRef ones;
+
    mask->bld = bld;
    mask->has_mask = FALSE;
    mask->cond_stack_size = 0;
@@ -339,8 +341,12 @@ static void lp_exec_mask_init(struct lp_exec_mask *mask, struct lp_build_context
    mask->ret_mask = 0;
 
    mask->int_vec_type = lp_build_int_vec_type(mask->bld->type);
-   mask->break_mask = mask->cont_mask = mask->cond_mask =
-         LLVMConstAllOnes(mask->int_vec_type);
+   ones = LLVMConstAllOnes(mask->int_vec_type);
+   mask->cond_mask = ones;
+   mask->cont_mask = ones;
+   mask->break_mask = ones;
+   mask->ret_mask = ones;
+   mask->exec_mask = ones;
 }
 
 static void lp_exec_mask_update(struct lp_exec_mask *mask)




More information about the mesa-commit mailing list