Mesa (master): st/mesa: fix memory leak in st_translate_mesa_program

Brian Paul brianp at kemper.freedesktop.org
Mon Jan 18 17:49:04 UTC 2010


Module: Mesa
Branch: master
Commit: e5347ca94dd58351aa81ec09addd537f1dbc3e9d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e5347ca94dd58351aa81ec09addd537f1dbc3e9d

Author: Marcin Slusarz <marcin.slusarz at gmail.com>
Date:   Sun Jan 17 14:47:53 2010 -0800

st/mesa: fix memory leak in st_translate_mesa_program

Signed-off-by: Brian Paul <brianp at vmware.com>

---

 src/mesa/state_tracker/st_mesa_to_tgsi.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/mesa/state_tracker/st_mesa_to_tgsi.c b/src/mesa/state_tracker/st_mesa_to_tgsi.c
index e788008..f07846f 100644
--- a/src/mesa/state_tracker/st_mesa_to_tgsi.c
+++ b/src/mesa/state_tracker/st_mesa_to_tgsi.c
@@ -779,6 +779,7 @@ st_translate_mesa_program(
 {
    struct st_translate translate, *t;
    unsigned i;
+   enum pipe_error ret = PIPE_OK;
 
    t = &translate;
    memset(t, 0, sizeof *t);
@@ -865,8 +866,10 @@ st_translate_mesa_program(
       
       t->constants = CALLOC( program->Parameters->NumParameters,
                              sizeof t->constants[0] );
-      if (t->constants == NULL)
+      if (t->constants == NULL) {
+         ret = PIPE_ERROR_OUT_OF_MEMORY;
          goto out;
+      }
       
       for (i = 0; i < program->Parameters->NumParameters; i++) {
          switch (program->Parameters->Parameters[i].Type) {
@@ -920,8 +923,6 @@ st_translate_mesa_program(
                         t->insn[t->labels[i].branch_target] );
    }
 
-   return PIPE_OK;
-
 out:
    FREE(t->insn);
    FREE(t->labels);
@@ -931,7 +932,7 @@ out:
       debug_printf("%s: translate error flag set\n", __FUNCTION__);
    }
 
-   return PIPE_ERROR_OUT_OF_MEMORY;
+   return ret;
 }
 
 




More information about the mesa-commit mailing list