Commit b3dde47e authored by Rob Shearman's avatar Rob Shearman Committed by Alexandre Julliard

widl: Fix crash in find_array_or_string_in_struct if the structure or union has no fields or cases.

parent ada3ca6f
...@@ -1721,14 +1721,20 @@ static size_t write_array_tfs(FILE *file, const attr_list_t *attrs, type_t *type ...@@ -1721,14 +1721,20 @@ static size_t write_array_tfs(FILE *file, const attr_list_t *attrs, type_t *type
static const var_t *find_array_or_string_in_struct(const type_t *type) static const var_t *find_array_or_string_in_struct(const type_t *type)
{ {
const var_t *last_field = LIST_ENTRY( list_tail(type->fields_or_args), const var_t, entry ); const var_t *last_field;
const type_t *ft = last_field->type; const type_t *ft;
if (!type->fields_or_args || list_empty(type->fields_or_args))
return NULL;
last_field = LIST_ENTRY( list_tail(type->fields_or_args), const var_t, entry );
ft = last_field->type;
if (ft->declarray && is_conformant_array(ft)) if (ft->declarray && is_conformant_array(ft))
return last_field; return last_field;
if (ft->type == RPC_FC_CSTRUCT || ft->type == RPC_FC_CPSTRUCT || ft->type == RPC_FC_CVSTRUCT) if (ft->type == RPC_FC_CSTRUCT || ft->type == RPC_FC_CPSTRUCT || ft->type == RPC_FC_CVSTRUCT)
return find_array_or_string_in_struct(last_field->type); return find_array_or_string_in_struct(ft);
else else
return NULL; return NULL;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment