st/mesa: initialize members of glsl_to_tgsi_instruction in emit_asm()
authorBrian Paul <brianp@vmware.com>
Sat, 5 Nov 2016 17:00:10 +0000 (11:00 -0600)
committerBrian Paul <brianp@vmware.com>
Sat, 5 Nov 2016 18:09:40 +0000 (12:09 -0600)
This fixes random crashes with MSVC release builds.  It seems the
members are implicitly initialized to zero with gcc, but not MSVC.
In particular, the tex_offset_num_offset field was non-zero causing
a loop over the NULL tex_offsets array to crash.

Zero-init those fields and a few others to be safe.

The regression began with acc23b04cfd64e "ralloc: remove memset from
ralloc_size".

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mesa/state_tracker/st_glsl_to_tgsi.cpp

index 882e959655eacb44cf0880e1fbb57ca9275bf28a..a4679e53b8da24666edf6f5216864497acd17497 100644 (file)
@@ -680,6 +680,10 @@ glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir, unsigned op,
    inst->is_64bit_expanded = false;
    inst->ir = ir;
    inst->dead_mask = 0;
+   inst->tex_offsets = NULL;
+   inst->tex_offset_num_offset = 0;
+   inst->saturate = 0;
+   inst->tex_shadow = 0;
    /* default to float, for paths where this is not initialized
     * (since 0==UINT which is likely wrong):
     */