summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Barbieri <luca@luca-barbieri.com>2010-08-11 15:59:43 +0200
committerLuca Barbieri <luca@luca-barbieri.com>2010-08-11 16:27:57 +0200
commit16b45ca7cefb3432b4133fe9d0b1dbfe3f286131 (patch)
tree5bbdd946fbba56a2787d256335500849947c8056
parentdeb809ec98664257ed215e75554e1a80c149c851 (diff)
translate_generic: return NULL instead of assert(0) if format not supported
This gives the caller a chance to recover (or crash anyway otherwise).
-rw-r--r--src/gallium/auxiliary/translate/translate_generic.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/gallium/auxiliary/translate/translate_generic.c b/src/gallium/auxiliary/translate/translate_generic.c
index 4d1977229e2..809a4e47f4d 100644
--- a/src/gallium/auxiliary/translate/translate_generic.c
+++ b/src/gallium/auxiliary/translate/translate_generic.c
@@ -201,12 +201,6 @@ emit_B8G8R8A8_UNORM( const float *attrib, void *ptr)
out[3] = TO_8_UNORM(attrib[3]);
}
-static void
-emit_NULL( const float *attrib, void *ptr )
-{
- /* do nothing is the only sensible option */
-}
-
static emit_func get_emit_func( enum pipe_format format )
{
switch (format) {
@@ -343,8 +337,7 @@ static emit_func get_emit_func( enum pipe_format format )
return &emit_A8R8G8B8_UNORM;
default:
- assert(0);
- return &emit_NULL;
+ return NULL;
}
}
@@ -539,8 +532,12 @@ struct translate *translate_generic_create( const struct translate_key *key )
tg->attrib[i].instance_divisor = key->element[i].instance_divisor;
tg->attrib[i].emit = get_emit_func(key->element[i].output_format);
+ if(!tg->attrib[i].emit)
+ {
+ FREE(tg);
+ return NULL;
+ }
tg->attrib[i].output_offset = key->element[i].output_offset;
-
}
tg->nr_attrib = key->nr_elements;