[PATCH] widl: Always generate a name for anonymous UDTs.
Zebediah Figura
z.figura12 at gmail.com
Sun Sep 1 11:41:34 CDT 2019
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47710
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
tools/widl/parser.y | 2 +-
tools/widl/typetree.c | 32 ++++++++------------------------
2 files changed, 9 insertions(+), 25 deletions(-)
diff --git a/tools/widl/parser.y b/tools/widl/parser.y
index 59875a5b160..64293fbee75 100644
--- a/tools/widl/parser.y
+++ b/tools/widl/parser.y
@@ -779,7 +779,7 @@ m_ident: { $$ = NULL; }
| ident
;
-t_ident: { $$ = NULL; }
+t_ident: { $$ = gen_name(); }
| aIDENTIFIER { $$ = $1; }
| aKNOWNTYPE { $$ = $1; }
;
diff --git a/tools/widl/typetree.c b/tools/widl/typetree.c
index e9afc6fdd28..2d110e757ba 100644
--- a/tools/widl/typetree.c
+++ b/tools/widl/typetree.c
@@ -265,18 +265,14 @@ type_t *type_new_void(void)
type_t *type_new_enum(const char *name, struct namespace *namespace, int defined, var_list_t *enums)
{
- type_t *t = NULL;
-
- if (name)
- t = find_type(name, namespace,tsENUM);
+ type_t *t = find_type(name, namespace,tsENUM);
if (!t)
{
t = make_type(TYPE_ENUM);
t->name = name;
t->namespace = namespace;
- if (name)
- reg_type(t, name, namespace, tsENUM);
+ reg_type(t, name, namespace, tsENUM);
}
if (!t->defined && defined)
@@ -293,18 +289,14 @@ type_t *type_new_enum(const char *name, struct namespace *namespace, int defined
type_t *type_new_struct(char *name, struct namespace *namespace, int defined, var_list_t *fields)
{
- type_t *t = NULL;
-
- if (name)
- t = find_type(name, namespace, tsSTRUCT);
+ type_t *t = find_type(name, namespace, tsSTRUCT);
if (!t)
{
t = make_type(TYPE_STRUCT);
t->name = name;
t->namespace = namespace;
- if (name)
- reg_type(t, name, namespace, tsSTRUCT);
+ reg_type(t, name, namespace, tsSTRUCT);
}
if (!t->defined && defined)
@@ -321,17 +313,13 @@ type_t *type_new_struct(char *name, struct namespace *namespace, int defined, va
type_t *type_new_nonencapsulated_union(const char *name, int defined, var_list_t *fields)
{
- type_t *t = NULL;
-
- if (name)
- t = find_type(name, NULL, tsUNION);
+ type_t *t = find_type(name, NULL, tsUNION);
if (!t)
{
t = make_type(TYPE_UNION);
t->name = name;
- if (name)
- reg_type(t, name, NULL, tsUNION);
+ reg_type(t, name, NULL, tsUNION);
}
if (!t->defined && defined)
@@ -348,17 +336,13 @@ type_t *type_new_nonencapsulated_union(const char *name, int defined, var_list_t
type_t *type_new_encapsulated_union(char *name, var_t *switch_field, var_t *union_field, var_list_t *cases)
{
- type_t *t = NULL;
-
- if (name)
- t = find_type(name, NULL, tsUNION);
+ type_t *t = find_type(name, NULL, tsUNION);
if (!t)
{
t = make_type(TYPE_ENCAPSULATED_UNION);
t->name = name;
- if (name)
- reg_type(t, name, NULL, tsUNION);
+ reg_type(t, name, NULL, tsUNION);
}
t->type_type = TYPE_ENCAPSULATED_UNION;
--
2.22.0
More information about the wine-devel
mailing list