diff options
author | Vadim Girlin <[email protected]> | 2013-05-04 22:05:43 +0400 |
---|---|---|
committer | Vadim Girlin <[email protected]> | 2013-05-07 04:40:26 +0400 |
commit | 46dfad8b36dda80982613a9d29b9a7e99db3abfb (patch) | |
tree | 3937e249fc56cc71a8dfd4988a2586db54e84923 | |
parent | 1c28e7c5a156fd209fc5cae2b86f416d14b7c4c8 (diff) |
r600g/sb: fix memory leaks
Signed-off-by: Vadim Girlin <[email protected]>
-rw-r--r-- | src/gallium/drivers/r600/sb/sb_bc_parser.cpp | 3 | ||||
-rw-r--r-- | src/gallium/drivers/r600/sb/sb_shader.cpp | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp index e1478d380dd..83292874d6b 100644 --- a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp +++ b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp @@ -74,6 +74,8 @@ int bc_parser::parse() { sh = new shader(ctx, t, bc->debug_id, enable_dump); int r = parse_shader(); + delete dec; + if (r) return r; @@ -94,7 +96,6 @@ int bc_parser::parse() { prepare_ir(); - delete dec; return r; } diff --git a/src/gallium/drivers/r600/sb/sb_shader.cpp b/src/gallium/drivers/r600/sb/sb_shader.cpp index 9bda84f32c4..5944ba66f48 100644 --- a/src/gallium/drivers/r600/sb/sb_shader.cpp +++ b/src/gallium/drivers/r600/sb/sb_shader.cpp @@ -355,6 +355,11 @@ shader::~shader() { for (node_vec::iterator I = all_nodes.begin(), E = all_nodes.end(); I != E; ++I) (*I)->~node(); + + for (gpr_array_vec::iterator I = gpr_arrays.begin(), E = gpr_arrays.end(); + I != E; ++I) { + delete *I; + } } void shader::dump_ir() { |