summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/draw/draw_pipe_stipple.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_stipple.c
parent9829ec2ad8cf74c6dbc7d8afbf36ddd5c5210d74 (diff)
draw: handle some out of memory conditions
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_pipe_stipple.c')
-rw-r--r--src/gallium/auxiliary/draw/draw_pipe_stipple.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pipe_stipple.c b/src/gallium/auxiliary/draw/draw_pipe_stipple.c
index 70fbab9ea7..4b3f4e7ae1 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_stipple.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_stipple.c
@@ -235,8 +235,8 @@ stipple_destroy( struct draw_stage *stage )
struct draw_stage *draw_stipple_stage( struct draw_context *draw )
{
struct stipple_stage *stipple = CALLOC_STRUCT(stipple_stage);
-
- draw_alloc_temp_verts( &stipple->stage, 2 );
+ if (stipple == NULL)
+ goto fail;
stipple->stage.draw = draw;
stipple->stage.name = "stipple";
@@ -248,5 +248,14 @@ struct draw_stage *draw_stipple_stage( struct draw_context *draw )
stipple->stage.flush = stipple_flush;
stipple->stage.destroy = stipple_destroy;
+ if (!draw_alloc_temp_verts( &stipple->stage, 2 ))
+ goto fail;
+
return &stipple->stage;
+
+fail:
+ if (stipple)
+ stipple->stage.destroy( &stipple->stage );
+
+ return NULL;
}