Browse Source

draw: Fix memory leaks in llvm code.

undefined
José Fonseca 15 years ago
parent
commit
e9bf09a98a

+ 2
- 0
src/gallium/auxiliary/draw/draw_llvm.c View File

@@ -207,6 +207,8 @@ draw_llvm_create(struct draw_context *draw)
void
draw_llvm_destroy(struct draw_llvm *llvm)
{
LLVMDisposePassManager(llvm->pass);

FREE(llvm);
}


+ 24
- 0
src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c View File

@@ -349,7 +349,31 @@ static void llvm_middle_end_finish( struct draw_pt_middle_end *middle )
static void llvm_middle_end_destroy( struct draw_pt_middle_end *middle )
{
struct llvm_middle_end *fpme = (struct llvm_middle_end *)middle;
struct draw_context *draw = fpme->draw;
struct draw_llvm_variant *variant = NULL;

variant = fpme->variants;
while(variant) {
struct draw_llvm_variant *next = variant->next;

if (variant->function_elts) {
if (variant->function_elts)
LLVMFreeMachineCodeForFunction(draw->engine,
variant->function_elts);
LLVMDeleteFunction(variant->function_elts);
}

if (variant->function) {
if (variant->function)
LLVMFreeMachineCodeForFunction(draw->engine,
variant->function);
LLVMDeleteFunction(variant->function);
}

FREE(variant);

variant = next;
}
if (fpme->fetch)
draw_pt_fetch_destroy( fpme->fetch );


Loading…
Cancel
Save