r600g/sb: fix memory leaks
authorVadim Girlin <vadimgirlin@gmail.com>
Sat, 4 May 2013 18:05:43 +0000 (22:05 +0400)
committerVadim Girlin <vadimgirlin@gmail.com>
Tue, 7 May 2013 00:40:26 +0000 (04:40 +0400)
Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
src/gallium/drivers/r600/sb/sb_bc_parser.cpp
src/gallium/drivers/r600/sb/sb_shader.cpp

index e1478d380dd560cb4b73c6644b2f6fc5cd7f3949..83292874d6bee7fd5012dcb5cbc05db6d79c550c 100644 (file)
@@ -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;
 }
 
index 9bda84f32c426bbf348aea758060b5125c7f3332..5944ba66f48b072580b8267bf1e6622291cd5848 100644 (file)
@@ -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() {