diff options
author | Alan Hourihane <alanh@vmware.com> | 2010-06-16 12:27:20 +0100 |
---|---|---|
committer | Alan Hourihane <alanh@vmware.com> | 2010-06-16 12:27:53 +0100 |
commit | 1c377cea1094c0b5414c663adf2fd393bf41ddfb (patch) | |
tree | 29b43d404690b3cac848994848314770480e26f6 /src/gallium/auxiliary/draw/draw_pipe_wide_line.c | |
parent | 9829ec2ad8cf74c6dbc7d8afbf36ddd5c5210d74 (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.c | 13 |
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; } |