summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/auxiliary/draw/draw_context.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c
index f4b1f8c973c..f6db95d756e 100644
--- a/src/gallium/auxiliary/draw/draw_context.c
+++ b/src/gallium/auxiliary/draw/draw_context.c
@@ -74,7 +74,7 @@ draw_create_context(struct pipe_context *pipe, boolean try_llvm,
{
struct draw_context *draw = CALLOC_STRUCT( draw_context );
if (draw == NULL)
- goto fail;
+ goto err_out;
#if HAVE_LLVM
if (try_llvm && draw_get_option_use_llvm()) {
@@ -83,20 +83,26 @@ draw_create_context(struct pipe_context *pipe, boolean try_llvm,
draw->own_gallivm = gallivm;
}
- if (gallivm)
- draw->llvm = draw_llvm_create(draw, gallivm);
+ if (!gallivm)
+ goto err_destroy;
+
+ draw->llvm = draw_llvm_create(draw, gallivm);
+
+ if (!draw->llvm)
+ goto err_destroy;
}
#endif
if (!draw_init(draw))
- goto fail;
+ goto err_destroy;
draw->pipe = pipe;
return draw;
-fail:
+err_destroy:
draw_destroy( draw );
+err_out:
return NULL;
}