summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/draw/draw_pipe_util.c
diff options
context:
space:
mode:
authorKeith Whitwell <keith@tungstengraphics.com>2008-04-21 17:03:37 +0100
committerKeith Whitwell <keith@tungstengraphics.com>2008-04-21 17:03:37 +0100
commit0d4ece4c5a243dc4b684331bad49f220311e5520 (patch)
tree8678f1241e5b47a6603da13b25a5844c92b8986c /src/gallium/auxiliary/draw/draw_pipe_util.c
parent0cd90a917d289363a3edb5cfa40c391eb07aa97c (diff)
draw: propogate lots of errors
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_pipe_util.c')
-rw-r--r--src/gallium/auxiliary/draw/draw_pipe_util.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pipe_util.c b/src/gallium/auxiliary/draw/draw_pipe_util.c
index e9821de976..04438f4dd0 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_util.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_util.c
@@ -68,24 +68,28 @@ draw_pipe_passthrough_tri(struct draw_stage *stage, struct prim_header *header)
*/
boolean draw_alloc_temp_verts( struct draw_stage *stage, unsigned nr )
{
- unsigned i;
- ubyte *store;
-
assert(!stage->tmp);
stage->tmp = NULL;
stage->nr_tmps = nr;
- if (nr == 0)
- return FALSE;
- store = (ubyte *) MALLOC( MAX_VERTEX_SIZE * nr );
- if (store == NULL)
- return FALSE;
+ if (nr != 0)
+ {
+ unsigned i;
+ ubyte *store = (ubyte *) MALLOC( MAX_VERTEX_SIZE * nr );
+
+ if (store == NULL)
+ return FALSE;
- stage->tmp = (struct vertex_header **) MALLOC( sizeof(struct vertex_header *) * nr );
-
- for (i = 0; i < nr; i++)
- stage->tmp[i] = (struct vertex_header *)(store + i * MAX_VERTEX_SIZE);
+ stage->tmp = (struct vertex_header **) MALLOC( sizeof(struct vertex_header *) * nr );
+ if (stage->tmp == NULL) {
+ FREE(store);
+ return FALSE;
+ }
+
+ for (i = 0; i < nr; i++)
+ stage->tmp[i] = (struct vertex_header *)(store + i * MAX_VERTEX_SIZE);
+ }
return TRUE;
}