mirror of
https://github.com/reactos/reactos.git
synced 2024-10-02 23:46:50 +00:00
Rob Shearman <robertshearman@gmail.com> Mon, 23 Jun 2008 21:28:56 +0000 (22:28 +0100)
widl: Fix crash in find_array_or_string_in_struct if the structure or union has no fields or cases. http://source.winehq.org/git/wine.git/?a=commit;h=b3dde47ed760880e323222af9ec7ad30702dec7c svn path=/trunk/; revision=37378
This commit is contained in:
parent
5a3ad75437
commit
a1ba38503c
|
@ -1659,14 +1659,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)
|
||||
{
|
||||
const var_t *last_field = LIST_ENTRY( list_tail(type->fields_or_args), const var_t, entry );
|
||||
const type_t *ft = last_field->type;
|
||||
const var_t *last_field;
|
||||
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))
|
||||
return last_field;
|
||||
|
||||
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
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue