Mesa (arb_geometry_shader4): gs: use mesa_realloc like the code for fs and vs
Zack Rusin
zack at kemper.freedesktop.org
Tue Jul 14 04:23:03 UTC 2009
Module: Mesa
Branch: arb_geometry_shader4
Commit: 856c400001deb0d890f92a7f7158d4e27a1c34a1
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=856c400001deb0d890f92a7f7158d4e27a1c34a1
Author: Zack Rusin <zackr at vmware.com>
Date: Mon Jul 13 17:28:36 2009 -0400
gs: use mesa_realloc like the code for fs and vs
---
src/mesa/state_tracker/st_program.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c
index 6c0d61d..27862cd 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -593,7 +593,7 @@ st_translate_geometry_program(struct st_context *st,
const GLuint inputMapping[])
{
struct pipe_context *pipe = st->pipe;
- struct tgsi_token tokens[ST_MAX_SHADER_TOKENS];
+ struct tgsi_token *tokens;
GLuint *outputMapping;
GLuint defaultInputMapping[GEOM_ATTRIB_MAX];
GLuint defaultOutputMapping[GEOM_RESULT_MAX];
@@ -616,6 +616,13 @@ st_translate_geometry_program(struct st_context *st,
GLint i;
+ tokens = (struct tgsi_token *)MALLOC(ST_MAX_SHADER_TOKENS * sizeof *tokens);
+ if(!tokens) {
+ /* FIXME: propagate error to the caller */
+ assert(0);
+ return;
+ }
+
memset(&gs, 0, sizeof(gs));
memset(input_flags, 0, sizeof(input_flags));
memset(output_flags, 0, sizeof(output_flags));
@@ -792,7 +799,9 @@ st_translate_geometry_program(struct st_context *st,
assert(num_tokens < ST_MAX_SHADER_TOKENS);
gs.shader.tokens = (struct tgsi_token *)
- mem_dup(tokens, num_tokens * sizeof(tokens[0]));
+ _mesa_realloc(tokens,
+ ST_MAX_SHADER_TOKENS * sizeof *tokens,
+ num_tokens * sizeof *tokens);
gs.vertices_out = stgp->Base.VerticesOut;
gs.input_type = stgp->Base.InputType;
gs.output_type = stgp->Base.OutputType;
More information about the mesa-commit
mailing list