translate_generic: return NULL instead of assert(0) if format not supported
This gives the caller a chance to recover (or crash anyway otherwise).
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user