mesa: fix array storage allocation bug
authorBrian Paul <brian.paul@tungstengraphics.com>
Thu, 3 Jul 2008 22:23:18 +0000 (16:23 -0600)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 3 Jul 2008 23:21:23 +0000 (17:21 -0600)
src/mesa/shader/slang/slang_codegen.c

index 4846c25..14fa38c 100644 (file)
@@ -2071,6 +2071,14 @@ _slang_gen_var_decl(slang_assemble_ctx *A, slang_variable *var)
 
       n->Store->File = PROGRAM_TEMPORARY;
       n->Store->Size = _slang_sizeof_type_specifier(&n->Var->type.specifier);
+      if (var->array_len > 0) {
+         /* this is an array */
+         /* round up element size to mult of 4 */
+         GLint sz = (n->Store->Size + 3) & ~3;
+         /* mult by array size */
+         sz *= var->array_len;
+         n->Store->Size = sz;
+      }
       A->program->NumTemporaries++;
       assert(n->Store->Size > 0);
    }