summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/draw/draw_pipe_wide_line.c
diff options
context:
space:
mode:
authorAlan Hourihane <alanh@vmware.com>2010-06-16 12:27:20 +0100
committerAlan Hourihane <alanh@vmware.com>2010-06-16 12:27:53 +0100
commit1c377cea1094c0b5414c663adf2fd393bf41ddfb (patch)
tree29b43d404690b3cac848994848314770480e26f6 /src/gallium/auxiliary/draw/draw_pipe_wide_line.c
parent9829ec2ad8cf74c6dbc7d8afbf36ddd5c5210d74 (diff)
draw: handle some out of memory conditions
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_pipe_wide_line.c')
-rw-r--r--src/gallium/auxiliary/draw/draw_pipe_wide_line.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pipe_wide_line.c b/src/gallium/auxiliary/draw/draw_pipe_wide_line.c
index d7ac95b740..98da9cfb99 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_wide_line.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_wide_line.c
@@ -202,8 +202,8 @@ static void wideline_destroy( struct draw_stage *stage )
struct draw_stage *draw_wide_line_stage( struct draw_context *draw )
{
struct wideline_stage *wide = CALLOC_STRUCT(wideline_stage);
-
- draw_alloc_temp_verts( &wide->stage, 4 );
+ if (wide == NULL)
+ goto fail;
wide->stage.draw = draw;
wide->stage.name = "wide-line";
@@ -215,5 +215,14 @@ struct draw_stage *draw_wide_line_stage( struct draw_context *draw )
wide->stage.reset_stipple_counter = wideline_reset_stipple_counter;
wide->stage.destroy = wideline_destroy;
+ if (!draw_alloc_temp_verts( &wide->stage, 4 ))
+ goto fail;
+
return &wide->stage;
+
+fail:
+ if (wide)
+ wide->stage.destroy( &wide->stage );
+
+ return NULL;
}