mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
glsl: Fix forward NULL dereference coverity warning
The comment says that it should be impossible for decl_type to be NULL here, so don't try to handle the case where it is, simply add an assert. >>> CID 1324977: Null pointer dereferences (FORWARD_NULL) >>> Comparing "decl_type" to null implies that "decl_type" might be null. No piglit regressions observed. Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
This commit is contained in:
parent
1dc2db7a4d
commit
12d510ab74
1 changed files with 6 additions and 7 deletions
|
|
@ -5732,17 +5732,16 @@ ast_process_structure_or_interface_block(exec_list *instructions,
|
|||
* is_interface case, will have resulted in compilation having
|
||||
* already halted due to a syntax error.
|
||||
*/
|
||||
const struct glsl_type *field_type =
|
||||
decl_type != NULL ? decl_type : glsl_type::error_type;
|
||||
assert(decl_type);
|
||||
|
||||
if (is_interface && field_type->contains_opaque()) {
|
||||
if (is_interface && decl_type->contains_opaque()) {
|
||||
YYLTYPE loc = decl_list->get_location();
|
||||
_mesa_glsl_error(&loc, state,
|
||||
"uniform/buffer in non-default interface block contains "
|
||||
"opaque variable");
|
||||
}
|
||||
|
||||
if (field_type->contains_atomic()) {
|
||||
if (decl_type->contains_atomic()) {
|
||||
/* From section 4.1.7.3 of the GLSL 4.40 spec:
|
||||
*
|
||||
* "Members of structures cannot be declared as atomic counter
|
||||
|
|
@ -5753,7 +5752,7 @@ ast_process_structure_or_interface_block(exec_list *instructions,
|
|||
"shader storage block or uniform block");
|
||||
}
|
||||
|
||||
if (field_type->contains_image()) {
|
||||
if (decl_type->contains_image()) {
|
||||
/* FINISHME: Same problem as with atomic counters.
|
||||
* FINISHME: Request clarification from Khronos and add
|
||||
* FINISHME: spec quotation here.
|
||||
|
|
@ -5784,8 +5783,8 @@ ast_process_structure_or_interface_block(exec_list *instructions,
|
|||
"to struct or interface block members");
|
||||
}
|
||||
|
||||
field_type = process_array_type(&loc, decl_type,
|
||||
decl->array_specifier, state);
|
||||
const struct glsl_type *field_type =
|
||||
process_array_type(&loc, decl_type, decl->array_specifier, state);
|
||||
fields[i].type = field_type;
|
||||
fields[i].name = decl->identifier;
|
||||
fields[i].location = -1;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue